signed char型別取值範圍計算

2021-09-14 01:13:16 字數 764 閱讀 1693

在c語言程式中,給定乙個型別,如何計算這個型別變數的取值範圍呢?比如有乙個字元型變數定義如下:

signed char c;

這個字元變數c的取值範圍是【-128,127】,是計算出來的呢?

假設字元型變數占用乙個位元組,也就是8bit。由於是「signed」,也就是有符號的,也就是可以是正數,也可以是負數,那麼8bit中的最高位就是表示符號位。符號位是「1」,就表示是負數,符號位是「0」,就表示是正數。先來看看符號位是「1」的情況。

符號位是「1」時,能表示的範圍是【10000000, 11111111】。二進位制的「10000000」表示的負數計算方式是將8bit全部取反,變成「01111111」,再加上「1」變成「10000000」,此時將其按照無符號數來計算,其10進製是128,再加上負號就是-128; 「11111111」 表示的負數計算方式是將8bit全部取反,變成「00000000」,再加上「1」變成「00000001」,此時將其按照無符號數來計算,其10進製是1,再加上負號就是-1。因此,符號位是「1」時,其取值範圍是【-128, -1】;

符號位是「0」時,能表示的範圍是【00000000, 01111111】。二進位制的「00000000」其10進製就是0 ,「01111111」其10進製是「2的6次方 + 2的5次方 + 2的4次方 + 2的3次方 + 2的2次方 + 2的1次方 + 2的0次方 」= 「64 + 32 + 16 + 8 + 4 +2 + 1」= 127。因此,符號位是0時,其取值範圍是【0, 127】,結合符號位是1的情況,整個signed char的取值範圍就是【-128,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...

c語言long和long long的取值範圍

溢位和取值範圍 c語言的整型溢位問題 整數溢位 c和指標 中寫過 long與int 標準只規定long不小於int的長度,int不小於short的長度。double與int型別的儲存機制不同,long int的8個位元組全部都是資料位,而double是以尾數,底數,指數的形式表示的,類似科學計數法,...

獲取mips32機器的各資料型別的取值範圍

一.背景 使用的mips 32bit機器,32bit的vxworks作業系統 各機器帶來的範圍都不一樣,與作業系統也有關聯 二.驗證型別的範圍 2.1 unsigned long void main void unsigned long ul 0xffffffffffffffff 16個f,乙個f佔...