(はじめに)エンディアンとは何か?
私がシステム開発の現場で聞いたことのない言葉「エンディアン」低レイヤの言語でポインタとかを意識的に扱う人には馴染みがあるのかもしれませんが、適当なライトウェイトな言語を使っているとまず聞かない気がします。なんのためにあるのかも思い出すことはない。ゆえに忘れて試験勉強の時に「なんだったっけ?」となりがち。
アメリカのエンディアンは嘘付かない。
※インディアンに似ていますが「エンディアン」みたいです。
で、エンディアンとは何か?
回答は…
エンディアンは”終端“を意味する単語のようです。
バイト列をメモリへどのように格納するのか?が決まるハードウェアレベルのメモリ格納の仕様のようです。なおエンディアンには、2つの方式としてリトルエンディアンとビッグエンディアンがあります。メリットとデメリットとセットで憶えておくと記憶定着にいいかもしれません。
ビッグエンディアンとは何か?
ビッグエンディアンとは何か?
回答は…
メモリアドレスが大きい方にデータの終端がくること!
例えば、ABCDという16進数の値があったとします。
(16進数なので1文字4ビットであり、2文字で1バイトです)
メモリの1アドレスに1ビット保存できるとすると、「AB」「CD」というように順番に格納されます。つまり、人が見たまんま格納されます。言い換えれば、ビッグエンディアンのメリットは「人が分かりやすいこと」だと言うことができそうです。
リトルエンディアンとは何か?
リトルエンディアンとは何か?
回答は…
メモリアドレスが小さい方にデータの終端がくること!
例えば、ABCDという16進数の値があったとします。
(16進数なので1文字4ビットであり、2文字で1バイトです)
値の末端から順番に小さい順に格納しますので、「CD」「AB」と格納されます。
なんだか人間には分かりにくいですが、値の桁数が増えてもメモリアドレスの位置が変わらないのでコンピュータ的には効率がいいと言えそうです。
「CD」「AB」とあっても、
「CD」「AB」「EF」とあっても、メモリのアドレスの読み取り開始位置が常に先頭にある(=メモリアドレスの位置が変わっていない)ので、コンピュータがデータを読み取りしやすい。
※メモリアドレスの考え方が分からない人は、メモリに関する説明を読んで下さい。
コメント