以最高位為符號位,二進制原碼最大為0111111111111111=2的15次方減1=32767最小為1111111111111111=-2的15次方減1=-32767。
此時0有兩種表示方法,即正0和負0:0000000000000000=1000000000000000=0所以,二進制原碼表示時,範圍是-32767~-0和0~32767,因為有兩個零的存在,所以不同的數值個數壹***只有2的16次方減1個,比16位二進制能夠提供的2的16次方個編碼少1個。
但是計算機中采用二進制補碼存儲數據,即正數編碼不變,從0000000000000000到0111111111111111依舊表示0到32767,而負數需要把除符號位以後的部分取反加1,即-32767的補碼為1000000000000001。
補碼系統中,範圍是-23768~32767。因此,實際上,二進制的最小數確實是1111111111111111,只是二進制補碼的最小值才是1000000000000000,而補碼的1111111111111111是二進制值的-1。
擴展資料
C語言double大小和取值範圍
占用的字節數:
printf("float:bytes%d;bit%d\n",sizeof(float),sizeof(float)*8);
double:bytes8;bit64
取值範圍:C標準規定,double類型至少能表示10位有效數字。壹些系統將多出來的32bit都來表示尾數部分,這就至少有13位有效數字了,這也超出了c規定的最小標準了。