エンディアンは複数バイトのデータを並べる方法です。
勉強のきっかけになった問題
16進数 ABCD1234 をリトルエンディアンで4バイトのメモリに配置したものはどれか。ここで, 0~+3はバイトアドレスのオフセット値である。
ア.
イ.
ウ.
エ.
平成21年秋期問24 リトルエンディアンで配置したもの|応用情報技術者試験.com
エンディアンとは、メモリにデータを送る時のデータの並べ方です。
バイトオーダーとも言います。
コンピュータでデータをメモリに読み書きしたり、ディスクに読み書きするときには、1バイトを最小単位にして行います。
エンディアンでは4バイト単位で管理してメモリにデータを送ります。
エンディアンとは、複数のバイト(多バイト、マルチバイト)で構成されるデータを記録・伝送する際に、どのような順番で各バイトを記録・伝送するかを表す順序のこと。
e-words.jp
リトルエンディアンは、4バイトにデータを後ろから順に格納していく方法です。
例えば・・・ 16進数 : ABCD1234(10101011 11001101 00010010 00110100) をリトルエンディアンで4バイトに格納すると
- 1バイト目 : 34(00110100)
- 2バイト目 : 12(00010010)
- 3バイト目 : CD(11001101)
- 4バイト目 : AB(10101011)
となります。
※. ()内は2進数です。
どのエンディアンが使われるかはCPUによって決まります。
Endian(エンディアン)ってなに? | 学校では教えてくれないこと | [技術コラム集]組込みの門 | ユークエスト株式会社
バイエンディアンは、リトルエンディアンとビッグエンディアンを切り替えられる方法だそうです。
実際にエンディアンを見てみる
自分のパソコンのエンディアンを確認する方法
Linuxのodコマンドでファイルのマジックナンバーを見ることで確認できます。
OSがmacOS SierraでプロセッサがIntel Core i7(x86)のパソコンに置いた拡張子.pngのファイルを見てみます。
.pngのマジックナンバーは、16進数で「89 50 4E 47」です。
$ od -t x -A x /Users/mana/Desktop/ThisIsPingFile.png | head -1 0000000 474e5089 0a1a0a0d 0d000000 52444849
「474e5089」となっていることからリトルエンディアンであることがわかります。
【 od 】 バイナリ・ファイルの内容を閲覧す
- オプション
- -A 表示するオフセットの基数を指定する
- -t 表示のタイプを指定する
- 表示タイプ
- x 16 進数
【 head 】 ファイルの先頭部分を表示する
- オプション
- -n ファイルの先頭からN行を表示する
マジックナンバー (magic number)とは
ハードコーディングされた(ソースコードの中に直接埋め込まれた)何らかの意味を持つ値のこと
http://wa3.i-3-i.info/word12868.html