char 型別的取值範圍

2021-08-11 05:12:26 字數 839 閱讀 1487

1, 

包含了定義char int short long型別取值的最大值和最小值用常量表示(例如schar_min = -128)

所以直接列印即可。

2,  如果要自己計算的話,則需要用到按位運算子~,>>,對於-(char)((unsigned char)~0 >> 1)解釋:

a: (unsigned char)~0用二進位制表示為:11111111

b: (unsigned char)~0 >> 1,將(unsigned char)~0邏輯右移1位,結果為:01111111

c: (char)((unsigned char)~0 >> 1),將((unsigned char)~0 >> 1)由無符號型別強制轉換為有符號型別

d: -(char)((unsigned char)~0 >> 1),得到的二進位制結果為11111111,最高位為符號為,對應的十進位制

數為:-127

3,  q:為什麼schar_min = -128,而自己通過計算得到的char型變數的最小值為-127呢?

a:絕大部分機器採用補碼方式表示有符號整數,

[-1]補碼 = 11111111 ?

-1 取絕對值 1

1 原碼 00000001

1 反碼 11111110

反碼+1 11111111

符號位置為1 11111111 <-- -1的補碼

依次類推,[-2]補碼 = 11111110 [-3]補碼 = 11111101 ... [-128]補碼 = 10000000,

故char型最小值為-128。

而自己通過計算得到的-127僅僅是將127取負作為最小值,其實在機器中它應該是倒數第二小值。

型別取值範圍

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...

char(int )型別取值範圍

先拋問題,為什麼char的取值範圍是 128 127或0 255呢?再做解答 概念悉知 char型別佔乙個位元組,乙個位元組8個位元位。計算機中儲存數字儲存的是補碼,正數的原返補相同 1.當char是無符號的時 8個位元位分布為 0000 0000 為最小值0,而當8個位元位分布為 1111 111...

數值型別 取值範圍

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