エンディアンネス
読み:エンディアンネス
外語:endianness
数値をメモリーに書き込む際の順番のこと。
概要
RAMなどのメモリーは一般に、8ビットを1バイトという単位として扱っている。
一方で、扱うデータのサイズは16ビットや32ビットと、大きな値となる。
このとき、メモリーには8ビット単位で分割し一定の順序で格納することになるが、どのような順序とするかは幾つか方法があり、これをエンディアンネスという。
由来
リトルエンディアンとビッグエンディアンの名称は「ガリバー旅行記」中のLittle-endian(卵は細い方から割るべきと主張する側)とBig-endian(卵は太い方から割るべきと主張する側)との対立に由来する。
判別プログラム
Cによる判別プログラム例は次のとおり。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i = 1;
if(*((char *)&i) == 0x01)
printf("リトルエンディアン\n");
else if(*((char *)&i + sizeof(i) - 1) == 0x01)
printf("ビッグエンディアン\n");
else
printf(">謎<\n");
return EXIT_SUCCESS;
}
再検索