コンピューターの大容量ストレージと小セグメントストレージに関する深い理解

コンテンツ

1.ビッグエンディアンとリトルエンディアンとは

2.ビッグエンディアンモードとスモールエンディアンモードが区別されるのはなぜですか?

3.例は次のとおりです

Baidu2015筆記試験の質問 


今日の勉強の前に、少し話をさせてください

過去36ヶ月間戦争を続けてきた特に強力な国が2つあり、この時期に何かが起こった。つまり、卵を食べるとき、元々の方法は卵の大きい方の端を壊すことでしたが、当時は皇帝の祖父は子供の頃だったので、卵を食べるときはこのように指を折ったので、父はすべての人が卵を食べるときはまず卵の小さい方の端を壊さなければならないと命じました。厳しく罰せられます。その後、庶民はこの法令にうんざりしました。その間、多くの反乱がありました。皇帝の1人はそれで亡くなり、もう1人は王位を失いました。反乱の理由は、他国のブレフスク国王が扇動したためです。反乱が収まった後、彼は逃げました。この国に避難してください。統計によると、卵の小さな端を壊して卵を食べるよりも死にたいという人が11,000人以上います。これは実際、当時の英国とフランスの間の紛争を風刺している。ネットワークプロトコルのパイオニアであるDannyCohenは、最初にこれら2つの用語を使用してバイト順序を指し、後にすべての人に広く受け入れられました。これがビッグエンディアンとリトルエンディアンという言葉の由来です。

1.ビッグエンディアンとリトルエンディアンとは


ビッグエンディアンモード:

つまり、上位バイトはメモリの下位アドレス側で排出され、下位バイトはメモリの上位アドレス側で排出されます。(ビッグエンディアンモードは、直感的にはそうだと思いますが、そうではありません)

リトルエンディアンモード:

下位バイトはメモリの下位アドレス側に配置され、上位バイトはメモリの上位アドレス側に配置されます。

2枚の写真を提供する方が直感的です。

 次の栗を見てください。

 VS環境では、データは下位アドレスに配置され、上位アドレスは上位アドレス、つまりリトルエンディアンストレージに配置されます。

2.ビッグエンディアンモードとスモールエンディアンモードが区別されるのはなぜですか?

これは、コンピュータシステムでは、バイトを1つの単位として使用し、各アドレス単位が1つのバイトに対応し、1つのバイトが8ビットから8ビットであるためです。ただし、C言語では、8ビット文字に加えて、16ビットのshort型と32ビットのlong型があります。さらに、16ビットや32ビットのプロセッサなど、8ビットを超えるプロセッサの場合はレジスタ幅まで1バイトより大きい場合は、配置方法に問題があるはずです。これは、ビッグエンディアンストレージとリトルエンディアンストレージのモードにつながります。

3.例は次のとおりです

Baidu2015筆記試験の質問 

現在のマシンの語長を決定するプログラムを設計する

#include<stdio.h>
int main()
{
	int ret = check_sys();
	if (ret == 1)
		printf("small\n");
	else
		printf("big\n");
	return 0;
}
int check_sys()
{
	int a = 1;
	char* p = (char*)&a;
	if (*p == 1)
		return 1;
	else
		return 0;
}

おすすめ

転載: blog.csdn.net/weixin_53939785/article/details/124253322