c言語の大端小端ストレージの問題
980 ワード
コンピュータにデータが格納されていることは、符号化された形式で格納されていることが知られています.コンピュータでは、データの高バイトコンテンツがハイランドアドレスに配置され、低バイトコンテンツが低アドレスに配置されている場合、小端バイトシーケンスと呼ばれます.逆に、データの高バイトコンテンツが最下位アドレスに、低バイトコンテンツが上位アドレスに配置されている場合、これを大端バイトシーケンスと呼ぶ.
例えば、int n=1;
その原コード、逆コード、補コードはいずれも00000000 00000000 00000000です
コンピュータ内の小端ストレージバイトシーケンスは00 00 00 01です.
大容量ストレージバイト順01,000,000
しかし、コンピュータに大きなエンドバイトシーケンスで格納されているか、それとも小さなエンドバイトシーケンスで格納されているかをどのように知っていますか.次に、コンピュータ内のデータの格納方法を求める2つの方法を示します.コードは以下の通りです.
この方法に加えて,共用体でこの問題を解決することもできる.
コードは次のとおりです.
例えば、int n=1;
その原コード、逆コード、補コードはいずれも00000000 00000000 00000000です
コンピュータ内の小端ストレージバイトシーケンスは00 00 00 01です.
大容量ストレージバイト順01,000,000
しかし、コンピュータに大きなエンドバイトシーケンスで格納されているか、それとも小さなエンドバイトシーケンスで格納されているかをどのように知っていますか.次に、コンピュータ内のデータの格納方法を求める2つの方法を示します.コードは以下の通りです.
#include
int main()
{
int num = 1;
char *p = (char *)#
if (*p == 0)
printf("
");
else
printf("
");
system("pause");
return 0;
}
この方法に加えて,共用体でこの問題を解決することもできる.
コードは次のとおりです.
#include
union UN
{
char c;
int i;
}un;
int main()
{
un.i = 1;
if (un.c ==0)
printf("
");
else
printf("
");
system("pause");
return 0;
}