char(int )型別取值範圍

2021-10-10 08:32:12 字數 940 閱讀 4264

先拋問題,為什麼char的取值範圍是-128-127或0-255呢?

再做解答:

概念悉知:char型別佔乙個位元組,乙個位元組8個位元位。計算機中儲存數字儲存的是補碼,正數的原返補相同;

1.當char是無符號的時:8個位元位分布為 0000 0000 為最小值0,而當8個位元位分布為 1111 1111 時為最大值即2^8-1=255;

2.當char是有符號型別時:最高位元位為符號位,因此在數值上的最大值為111 1111

即2^7-1=127; 那麼,還剩下乙個位元位為符號位,那不就表示 取值範圍為 -127—127嗎,怎麼會是-128呢;

3.接下來談談-128的由來:

理由一:-127-127總共有255個數字,而8個位元位共有256中排列組合,在有符號型別中 0000 0000 表示數值為+0(暫且這麼描述),1000 0000 表示數值為-0,那麼乙個0有兩種表示,很顯然浪費了一種排列組合1000 0000,那麼多出來的位置怎麼才不浪費呢? -127-127都有對應的表示了,1000 0000最高位為1表示負數,那麼只能往下安排了,即(規定,規定,規定)100 0000表示-128;

理由二:定義char n= -128,-128的原碼為1 1000 0000,反碼為原碼符號位不變,其它位按位取反1 0111 1111,補碼為反碼+1,1 1000 0000,將其放入n中時發生截斷即 1000 0000,恰好與規定吻合;

4.驗證1000 0000==128;

如圖,定義乙個有符號的char變數,將128賦值給它,128的二進位制序列為1000 0000,輸出時卻是-128,即當出現1000 0000序列即預設符合規定等於-128,不再進行轉換;

其餘型別以此類推;

型別取值範圍

ieee754浮點數的表示方法。c語言裡對float型別資料的表示範圍為 3.4 10 38 3.4 10 38。double為 1.7 10 308 1.7 10 308,long double為 1.2 10 4932 1.2 10 4932.型別位元 位 數 有效數字 數值範圍 float 6...

數值型別 取值範圍

32位cpu 型別說明符 位元組數值範圍 字元型char 2基本整型 int 4短整型 short int 2長整型 long int 4無符號型 unsigned 單精度實型 float 4雙精度實型 double 8位元組 unsigned char 1int 0xfffffff 32位 其中乙...

char 型別的取值範圍

1,包含了定義char int short long型別取值的最大值和最小值用常量表示 例如schar min 128 所以直接列印即可。2,如果要自己計算的話,則需要用到按位運算子 對於 char unsigned char 0 1 解釋 a unsigned char 0用二進位制表示為 111...