一. 机器数与真值
1、机器数:一个数在计算机中的二进制表示形式。
二进制表示数值的符号只有0和1两个数码,在计算机中数值的正负符号也用数字表示,我们把最高位作为符号位,用0表是正数符号,用1表示负数符号,这样,机器中的数值和符号就全部“数字化”了。
机器数有2个特点:一是符号数字化,二是数的大小受机器字长的限制。
比如:计算机字长为8位,那么十进制数+4 ,机器数表示就是 00000100。十进制数-4 ,机器数表示就是10000100 。
2、真值:带符号位的机器数对应的真正数值(十进制的数)称为真值。
机器数的最高位是符号位,我们将带符号位的机器数对应的真正数值称为机器数的真值。
比如:机器数00000100的真值 = +000 0100 = +4,机器数1000 0100的真值 = –000 0100 = –4
二、原码、反码与补码
原码、反码与补码是机器数的编码方法,被称为码制。
- 1、原码表示法:符号位+真值的绝对值。
原码是最简单的机器数表示法。最高位是符号位,0表示正号,1表示负号,其余的n-1位表示数值的绝对值;
比如:
[+3] = [00000011] (原码)
[-3] = [10000011] (原码)
- 2、反码的表示法:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
比如:
[+3] = [00000011](原码)= [00000011](反码)
[-3] = [10000011](原码)= [11111100](反码)
- 3、补码的表示法:正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。 (即在反码的基础上+1)
比如:
[+3] = [00000011](原码)= [00000011](反码)= [00000011](补码)
[-3] = [10000011](原码)= [11111100](反码)= [11111101](补码)
三、原码、反码与补码转换
1、正数部分:
正整数的原码、反码和补码是一样的,只要到符号位(第一位)是0,就可以照着写出其他两种码。
比如:[+2] = [00000010](原码) = [00000010](反码) = [00000010](补码)
2、负数部分:
1) 原码转换为反码:符号位不变,数值位分别“按位取反”
2) 反码转换为原码也是一样:符号位不变,数值位分别“按位取反”
3) 原码转换为补码:符号位不变,数值位按位取反,末位再加1
4) 补码转换为原码:符号位不变,数值位按位取反,末位再加1
即补码的补码等于原码。
例1:[x](补码)=10011000,其原码为( )。
A.011001111 B.11101000 C.11100110 D.01100101
答案:B
例2:十进制数-103的补码是( )。
A.10011001 B.11100111 C.10110011 D.00011001
答案:A