char類型取值範圍:-128~127
數字在計算機中以補碼形式存儲,因爲正數的補碼就是其本身且正數符號位置0,故最大值爲01111111也就是127
而負數的補碼是按位取反 (符號位保持不變),再加1。
00000001 //-1
11111110 //取反
11111111 //+1
對於最小的負數-128來說
10000000 //-128(-0)
11111111 //取反
1000000 //+1
不管是原碼還是補碼, 總會出現 -0 這個值。 本來 +0 與 -0 是沒有區別的。 但對於存儲器和編譯器來講,總得充分利用每個字節吧, 更不想出現二義性。 那麼,乾脆將 -0 表示爲 -128 , 這樣一來,既增大了signed char 數值的表示範圍,又消除了 -0 的二義性,