計算機中的整數分正整數(也稱不帶符號的整數)和整數(也稱帶符號的整數)兩類。
8個二進制數位表示的正整數范圍為0~255(28-1),16個二進制位表示的正整數范圍為0~65535(216-1),32個二進制位表示的正整數范圍為0~232-1,64個二進制位表示的正整數范圍為0~264-1。
用二進制數表示帶符號的整數時,一般規定最高位是符號位,用0和1區分正、負。帶符號數的表示方法常用的有原碼、補碼和反碼三種。
(1)原碼
原碼的表示規則是:最高位表示數的符號,“0”表示正號,“1”表示負號,其余各位表示數的大小,即這個數的絕對值。
8個二進制位表示的整數范圍是-127~+127(-27+1~27-1),16個二進制位表示的整數范圍是-32767~+32767(-215+1~215-1),32個二進制位表示的整數范圍是-231+1~231-1。
(2)補碼
補碼的表示規則是:最高位表示數的符號,“0”表示正號,“1”表示負號,如為正數,其余各位為原數,如為負數,其余各位為原數各位取反后加1,即正數的補碼與原碼相同,負數的補碼為原碼中除符號位外其余各位取反加1。
以補碼方式表示整數,8個二進制位表示范圍是-128~+127(-27~27-1),16個二進制位表示范圍是-32768~+32767(-215~215-1),32個二進制位表示范圍是-231~231-1。
如:假設位數為8,用[X]補表示X的補碼,則
[+75]補=01001011 [-75]補=10110101
[-1]補=11111111 [-127]補=10000001
由一個數的補碼求該數的方法是:若符號位為0,則其余各位代表該數,若符號位為1,則將其余各位取反后加1,即為該數。
如:假設位數為8,補碼11100110
(3)反碼
反碼的表示規則是:最高位表示數的符號,“0”表示正號,“1”表示負號,如為正數,其余各位為原數,如為負數,其余各位為原數各位取反,即正數的反碼與原碼相同,負數的反碼為原碼中除符號位外其余各位取反。
需要注意的是,0的反碼不是唯一的,這一點與原碼相同。