文字列のコンピュータ内部表現(ビット・バイト・エンディアン)、文字コードとは何だったかを思い出すためのメモ


文字列のコンピュータ内部表現(ビット・バイト・エンディアン)、文字コードとは何だったかを思い出すためのメモ

だいたい忘れるので寝不足でも理解できるように、自分なりにまとめました。

内部表現という単語の使い方が街がているかもしれません。


コンピュータ内部表現


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 (エンディアン)

低レイヤの話。

バイトを並べる順番のこと。


  • ビッグエンディアン

  • リトルエンディアン

  • ミックスエンディアン(ミドルエンディアン)

がある。同一システム(アーキテクチャ)ないで完結する処理の場合は、考慮する必要がないが、異なるアーキテクチャのシステムで生成されたバイナリファイルを開くときに注意しなければならない。

どうでも良いが、元ネタはガリバー旅行記


参考

Wikipedia


文字コード

各文字とバイナリでの表現を対応付けたもの。

ASCIIはアルファベットと記号

1byte = 1文字


参考

ASCII

日本語コード