java char表示范围_char取值范围
展開全部
1.char 是一個字節類型。 由8位組成。 ?char 又分為 signed char (有符號類型) 和 unsigned char (無符號類型)。 通常,我們的理解是62616964757a686964616fe58685e5aeb931333365663537將char 作為 signed char 來處理。
2.我們先來看 signed char的最大值。 ?最高位是 符號位, 0 代表正數; 1 代表負數。0 1 1 1 ?1 1 1 1 ? ? 這個值等于 2^0 + 2^1 + 2^2 ?+ 2^3 ?+ 2^4 ?+ 2^5 ?+ 2^6 ?= 127 ?。 也有一個簡便計算方法:2^7 -1 = 128-1 =127 ? 所以,signed char 的最大值是 127 。 ?這個容易理解。
3.接下來,看看 singed char 的 最小值 是如何計算的?需要明白一個概念, 在計算機中, 數值是以補碼形式存儲的。 正數的補碼是其本身; 而負數的補碼是 取反 (符號位保持不變),再加1。
4.我們先來看 -1 的存儲過程:
-1: ? ? 1 0 0 0 ?0 ?0 ?0 ?1 ? ?->(取反) 1 1 1 1 1 1 1 0 ? ? ->(加1) ?1 1 1 1 1 1 1 1
-2: ?1 0 0 0 ?0 ?0 ?1 ?0 ? ?->(取反) 1 1 1 1 1 1 0 1 ? ? ->(加1) ?1 1 1 1 1 1 1 0
-3: ?1 0 0 0 ?0 ?0 ?1 ?1 ? ?->(取反) 1 1 1 1 1 1 0 0 ? ? ->(加1) ?1 1 1 1 1 1 0 1
… …
-127 ? 1 1 1 1 ?1 ?1 ?1 ?1 ? ?->(取反) 1 0 0 0 0 0 0 0 ? ? ->(加1) ?1 0 0 0 0 0 0 1
-128 ? 1 0 0 0 ?0 ?0 ?0 ?0 ? ?->(取反) 1 1 1 1 1 1 1 1 ? ? ->(加1) ? 1 0 0 0 ?0 ?0 ?0 ?0
5.不管是原碼還是補碼, 總會出現 ?-0 這個值。 本來 +0 與 -0 是沒有區別的。 但對于存儲器和編譯器來講,總得充分利用每個字節吧, 更不想出現二義性。 那么,干脆將 -0 表示為 -128 , 這樣一來,既增大了signed char 數值的表示范圍,又消除了 -0 的二義性,所以signed char的取值范圍是 -128~127。
拓展資料
char是C/C++整型數據中比較古怪的一個,其它的如int/long/short等不指定signed/unsigned時都默認是signed,但char在標準中是unsigned,編譯器可以實現為帶符號的,也可以實現為不帶符號的,有些編譯器如pSOS的編譯器,還可以通過編譯開關來指定它是有符號數還是無符號數。
char是characteristic的簡寫,表示一個環或者域的特征,即最小的非負整數n,使ne=0。(e為單位元) 。
總結
以上是生活随笔為你收集整理的java char表示范围_char取值范围的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台式电脑里计算机里找不到驱动器,教大家为
- 下一篇: Site Map