【目录】
1. 机器数
2. 原码
3. 反码
4. 补码
5. 移码
6. 课堂练习
7. +0与-0
8. 真题回顾
9. 总结
【正文】
1. 机器数
各种数值在计算机中表示的形式称为机器数。
机器数是采用二进制
计数制。
数的符号用0和1表示,小数点则隐含,表示不占位置。
机器数对应的实际数值称为数的真值
。
机器数有无符号数
和带符号数
之分。
无符号数表示正数
,在机器数中没有符号位。
对于无符号数,若约定小数点的位置在机器数的最低
位之后,则是纯整数。
对于无符号数,若约定小数点的位置在机器数的最高
位之前,则是纯小数。
对于带符号数,机器数的最高位是表示正、负的符号位
,其余位则表示数值。
为了便于运算,带符号的机器数可采用原码、反码和补码等不同的编码方法,机器数的这些编码方法称为码制。
2. 原码
原码:最高位表示符号位
,其余位表示数值部分。
0表示正数,1表示负数。
【示例】
将5转换为2进制:
5=4+1=2^2+2^0=101
+5的原码为00000101(左边的第一个数字0表示正数,后7个数字表示数值)
-5的原码为10000101(左边的第一个数字1表示负数,后7个数字表示数值)
3. 反码
正数的反码与原码相同。
负数的反码是对其原码的数值位逐位取反
,注意符号位不变
。
【示例】
+5的原码为00000101,反码为00000101。(正数不变)
-5的原码为10000101,反码为11111010。(符号位不变,数值位0变1,1变0)
【解析】
负数的反码符号位不变,则左边第一个数字1不变。
后面的7个数值位取反,即0变成1,1变成0。
因此,-5的原码为10000101,反码为11111010。
4. 补码
正数的补码与原码相同。
负数的补码是其反码加1。
【示例】
+5的原码为00000101,反码为00000101,补码为00000101。(正数的原码、反码、补码相同)
-5的原码为10000101,反码为11111010,补码为11111011。(负数的补码在其反码的基础上+1)
【解析】
补码是在反码的基础上+1
即可。
5. 移码
移码是在补码的基础上,将符号位取反
。
+5的原码为00000101,反码为00000101,补码为00000101,移码为10000101。(第1个数字0取反变成1)
-5的原码为10000101,反码为11111010,补码为11111011,移码为01111011。(第1个数字1取反变成0)
6. 课堂练习
若机器字长n等于8,分别写出+1, -1, +127, -127, +45,- 45,
的原码 反码 补码 移码。
【解析】
机器字长n等于8,表示8位二进制数。
【+1与-1】
原码:00000001 10000001(最高位表示符号位,后7位表示数值)
反码:00000001 11111110(负数的符号位不变,数值位取反)
补码:00000001 11111111(负数的符号位不变,数值+1)
移码:10000001 01111111(在补码的基础上,符号位取反)
【+127, -127】
先将127转换为二进制:
127=64+32+16+8+4+2+1=2^6+2^5+2^4+2^3+2^2+2^1+2^0=1111111
原码:01111111 11111111(最高位表示符号位,后7位表示数值)
反码:01111111 10000000(负数的符号位不变,数值位取反)
补码:01111111 10000001(负数的符号位不变,数值+1)
移码:11111111 00000001(在补码的基础上,符号位取反)
【+45, -45】
先将45转换为二进制: 45 = 32+8+4+1=2^5+2^3+2^2+2^0=101101
原码:00101101 10101101 (最高位表示符号位,后7位表示数值)
反码:00101101 11010010(负数的符号位不变,数值位取反)
补码:00101101 11010011(负数的符号位不变,数值+1)
移码:10101101 01010011(在补码的基础上,符号位取反)
7. +0与-0
【+0, -0】
原码:00000000 10000000
反码:00000000 11111111
补码:00000000 00000000
移码:10000000 10000000
数值0的原码表示有两种形式:[+0]原=0 0000000, [-0]原=1 0000000。
数值0的反码表示有两种形式:[+0]反=0 0000000, [-0]反=11111111。
数值0的补码是唯一的:[+0]补=0 0000000, [-0]补=00000000
。
数值0的反码是唯一的:[+0]移=1 0000000 [-0]移=10000000
0是一个特殊的数字,大家注意补码和移码中,+0, -0的编码相同。
8. 真题回顾
如果2x
的补码是90H
,那么X的真值是()。
A. 72
B. -56
C. 56
D. 111
【思路解析】
90H中的H
表示90是十六进制。
首先将90H转换成二进制。
16进制转二进制用4分法
,将一个数字拆成4位二进制数。
9 = 8+1 = 2^3+2^0 = 1001
0 = 0000
90H = 10010000
将补码换算成原码(从后往前推,90H是补码,先求补码,然后推出反码,最后推出原码)
原码:11110000
反码:10001111(反码取反得原码)
补码:10010000(补码-1得反码)将原码的二进制转十进制
2进制转10进制用乘法(乘以权值2)
最高位的1表示该数是负数
11110000 = - (2^6+2^5+2^4)= -(64+32+16)=-112
2x=-112
x=-56
正确答案:B
9. 总结
原码:最高位是符号位。0表示正数,1表示负数。
反码:正数的反码与原码相同。负数的反码是对其原码的数值位
逐位取反
,注意符号位不变
。补码:正数的补码与原码相同。负数的补码是其反码加1。
移码:补码的基础上,将
符号位取反
。计算方法
本节总结
章节总结