C語言零開頭
發布時間: 2025-06-16 18:12:47
⑴ C語言無符號數為什麼取值范圍0開頭
首先這里是無符號和有符號之間的區別,
在這里我們將他們實現為二進制後,
樓主你會更好的理解他們之間的區別,
而且這部分的題目是面試題常考的
int
a
=
-400;
在這里a被定義成了一個有符號的整數,
且值為-400;
在計算機中的二進制為
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1110
0111
0000
有符號的解釋出來的值為-400,
但是無符號解釋出來的值卻不同
而printf(「a=%u\n」,a);
很明顯這里是要將a按無符號的形式輸出(%u)
所以要將a按無符號的形式解釋
即將
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1110
0111
0000
解釋成無符號的形式
就a值就變成了4294966896
書上解釋說使用%u格式控制字元串輸出正整數時該數不發生變化,輸出負整數時該負整數將被轉換為無符號整數輸出。
現在這句話的意思已經很明顯,
就在計算機中一個數字最終是以二進制存在,
不會改變
但是,
我們可以用有符號或者是無符號的形式去解釋他
PS:若有不明白的地方,
可以追問
樓主,
具體方面的原理可以看<<深入理解計算機系統>>中第2章方面的知識,
不需要前綴知識,
直接看就行了。
熱點內容