计算机中的整数分正整数(也称不带符号的整数)和整数(也称带符号的整数)两类。
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的反码不是唯一的,这一点与原码相同。