討論課一:數據的存儲方式

選題一

見相關資料浮點數的二進制表示

 選題三

問題

printf("%s\n",c)對應輸出"eUNH"呢?

解答

先說一下打印字符串的方法:以c爲首地址,依次打印每一個字節,遇到ASCII碼爲0的字節停止(即遇到字符串終止符'\0')。

我們知道c數組的第一個int,佔4個字節,每個字節的ASCII碼分別爲72('H')、78('N')、85('U')、101('e');第二個int每個字節的ASCII碼分別爲114('r')、0('\0')、0('\0')、0('\0')。

先說結論,我們的機器是“小端”,即小地址保存的是低位。

所以,這2個int(8個字節)的排列爲'e'  'U'  'N'  'H'  '\0'  '\0'  '\0'  'r',打印的結果也就不言而喻了。

選題五

問題:如何編程判斷機器是“大端”還是“小端”?

解答:以下函數,返回1則爲小端

int checkSystem(void)
{
	int i = 0x12345678;
	char *c = &i;
	return ((c[0] == 0x78) && (c[1] == 0x56) && (c[2] == 0x34) && (c[3] == 0x12));
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章