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