文字列のコンピュータ内部表現(ビット・バイト・エンディアン)、文字コードとは何だったかを思い出すためのメモ
だいたい忘れるので寝不足でも理解できるように、自分なりにまとめました。
内部表現という単語の使い方が街がているかもしれません。
コンピュータ内部表現
bit
コンピュータの内部では、基本的に2進数によって表現されている。
一つの位で0 or 1という2つの状態を表現しており、この位が bit (2^1)
バイナリデータ。
byte
8 bit = 1 byte
8 bitをまとめた呼び方
Hex
16進数表現
1byte(8bit)を2進数で表現すると
0 0 0 1 0 0 1 0 (自明に8桁)
これを16進数で表現すると、2^8 = 16^2 より2桁で表現される。
ただし、1byteをまとめて16進数で表現するのではなく、4bitずつ変換する。(2^4=16なので自明)
1byteはHexで2文字。
0001 0010 (bin) -> 12 (hex)
| |
1 2
endian (エンディアン)
低レイヤの話。
バイトを並べる順番のこと。
- ビッグエンディアン
- リトルエンディアン
- ミックスエンディアン(ミドルエンディアン)
がある。同一システム(アーキテクチャ)ないで完結する処理の場合は、考慮する必要がないが、異なるアーキテクチャのシステムで生成されたバイナリファイルを開くときに注意しなければならない。
どうでも良いが、元ネタはガリバー旅行記
参考
文字コード
各文字とバイナリでの表現を対応付けたもの。
ASCIIはアルファベットと記号
1byte = 1文字