範圍是 -128至127.根據補碼的幾條規定即可推出上述結論:
1 若二進位制每位全為0,則表示數0
2 若最高位(即符號位)為0,表示正數
3 若最高位為1, 表示是負數,而該負數的絕對值是多少呢?將每個二進位制位(包括符號位)取反加1,得到乙個二進位制數,將該數看成無符號數,其值就是上述負數的絕對值。
例如,二進位制的 10000000 的最高位為1, 所以它表示的是負數。是負的多少呢?我們將其八位全部取反,得到01111111, 然後加1,得到10000000. 將該數看作無符號數,值為128, 故計算機中的10000000表示的是-128
最高位(即符號位)為1的8位有符號數有128個,故可表示128個負數;最高位為0的8位有符號數有128個,但全0的那個表示數0,所以總共只能表示127個正整數。
最高位表示符號位吧,也即有符號的8位二進位制數的補碼問題.
下面一步步的說明:
最高位符號位,故後面還有7位,正數時原碼和補碼相同,故此時的
0表示為0000 0000;
1表示為0000 0001;
依次類推...
0111 1111即表示+(64+32+16+8+4+2+1)=+127
負數時最高位為1,負數的補碼為對應的原碼部分取反加1,故有:
-1即1000 0001取反後為1111 1110 再加1得補碼為1111 1111;
-2即1000 0010(理解為-1的數字位加了1成了10)取反後為1111 1101再加1得補碼為1111 1110;
依次類推...
-127即1111 1111取反即1000 0000再加1得補碼為1000 0001
-128即1000 0000(同理可以理解為數字位加1成了000 0000)取反後為1111 1111再加1得補碼1000 0000
看以上的結果,從0000 0000到1000 0000再到1111 1111全部的8位已經組合完畢,不能再有其他情況出現了,故只能表示-128~+127
8位有符號數的取值範圍
首先我們知道,計算機以補碼的形式儲存的,正數的補碼是原碼不變,負數的補碼是原 碼的取反加1。我們先來看 127,原碼0111 1111對吧,若 128是多少呢,0111 1111 1 1000 0000 原碼 然後儲存時,計算機一看是最高位為1,就保持符號位不變,後面7位取反加 1,然後呢,進製捨棄...
如何計算乙個有符號數的補碼表示?
按照 譚浩強.c程式設計 第三版 北京 清華大學出版社,2005 的第40頁至第41頁所述,求乙個負數的補碼的方法如下 例 求 10的補碼的方法如下 1 取 10的絕對值10 2 10的絕對值的二進位制形式為1010 3 對1010取反得1111 1111 1111 0101 這裡假定乙個整數佔16...
有符號數和無符號數的範圍
參考這篇文章 無符號數 最高位不用來表示正負,它沒有負數,比如,4位無符號數表示的範圍,0000 1111,大小即0 15,有符號數 最高位用來表示正負,對於有符號數表示的範圍我們要著重談一下,4位有符號數,負數最小值很多人認為是1111 即 6 然而並不是,我們先把4位有符號數大概全部都寫出來是這...