计算机组成原理笔记——原码,反码,补码,移码,有符号数,无符号数

在这里插入图片描述
✪ 无符号数(默认为整数)

无符号数顾名思义也就是不带符号的数
若机器字长为8位,无符号数的表示范围 0~2^8-1 , 即0~255

✪ 有符号数(0表示正号,1表示负号)

① 小数表示:如(符号位与数字位用.(点)表示)
+0.1101在机器中表示为 0.0101
- 0.0110在机器中表示为 1.00110

②整数表示:如(符号位与数字位用,(逗号)表示)
+1101 在机器中表示为 0,1101
- 1101 在机器中表示为 1,1101

0表示正号,1表示负号,这样把符号数字化得数成为机器数,把带“+”,“-”的数称为真值
若机器字长为8位,有符号数的表示范围 -2^8- 1 2^8-1 , 即0~255

✪ 原码 ✪

计算机中最简单的表示方式,符号位+真值位表示
0,10011 1,1001 0,0000 1,11111 这都是可以表示原码

✪ 反码 ✪

正数反码:等于原码 。 如:0,0010的反码还是为0,0010
负数反码:符号位不变,数值位与原码数值位相反。如1,1010的反码为1,0101

✪ 补码 ✪

正数补码:等于原码 。 如:0,0010的补码还是为0,0010
负数补码:符号位不变,反码的数值位+1。
负数补码如1,1010的反码为1,0101,然后反码数值位加1求补码
在这里插入图片描述
✪ 移码 ✪

当真值用补码表示时,由于符号位和数值部分一起编码,由于计算机无法分辨“,”逗号,所以人们很难从补码的形式上辨别其大小,例如:0,1010和1,1010,显而易见前者大于后者,而从代码形式上,会作为5位二进制代码比较,即01010<11010,其实恰恰相反;所以,有了移码
                 移码定义:
在这里插入图片描述
n 表示整数位数,x是指真值(带符号位的数)

例题1:如 X=+10100,则X的移码是多少?

解析:题意可知n=5
[X]移=2^5 + 10100 = 1,10100 (用逗号将符号位和数值位分隔开)

例题2:如 X= - 10100,则X的移码是多少?

解析:题意可知n=5
[X]移=2^5 - 10100 = 0,01100 (用逗号将符号位和数值位分隔开)

✪ 0的原反补移码

0有+0 和 -0 之分

假设 [+0]原=0,000 则 [+0]反=0,000 [+0]补=0,001 [+0]移=2^3+0=1,000

假设 [- 0]原=1,000 则 [- 0]反=1,111 [ -0]补=0,001 [- 0]移=2^3 -0=1,000

所以的补码和移码是唯一的

✪ 习题练习

1.若寄存器内容为1111 1111,若它等于+127,则为()
A、原码
B、补码
C、反码
D、移码
我的答案:D
解析:
A.若为原码,则它等于1,1111111= -(2^7-1)= -127
B.若为补码,则它原码为1,0000001= - 1
C.若为反码,则它原码为1,0000000= - 0
D.若为移码,移码=真实值 - 2^(n-1),这里n=8,所以真实值=移码 - 2 ^7=1111 1111-1000 0000=0,111 1111=+127

2.若寄存器内容为0000 0000,若它等于-128,则为()
A、原码
B、补码
C、反码
D、移码
我的答案:D
解析:
A.若为原码,则它等于0,0000000= +0
B.若为补码,则它原码为0,0000000= +0,由于0的补码只有一个,即为0
(补码另一种方法:补码=真实值 + 2^n,这里n=8,真实值=补码-2 ^8=0000 0000 + 10000 0000=0,000 0000(前面的1舍去))
C.若为反码,则它原码为0,1111111= +127
D.若为移码,移码=真实值 - 2^(n-1),这里n=8,所以真实值=移码 - 2 ^7=0000 0000-1000 0000=1,1000 0000= - 128

3.若寄存器内容为1111 1111,若它等于-1,则为()
A、原码
B、补码
C、反码
D、移码
我的答案:B
解析:
A.若为原码,则它等于1,111 1111=-127
B.若为补码,则它原码为1,0000001= - 1
C.若为反码,则它原码为1,000 000= -0
D.若为移码,移码=真实值 - 2^(n-1),这里n=8,所以真实值=移码 - 2 ^7=1111 1111-1000 0000=0,111 1111=+127

4.若寄存器内容为1000 0000,若它等于-0,则为()
A、原码
B、补码
C、反码
D、移码
我的答案:A
解析:
A.若为原码,则它等于1,000 0000=- 0
B.若为补码,则它原码为1,000 0000= -0
C.若为反码,则它原码为1,111 1111= - 127
D.若为移码,移码=真实值 - 2^(n-1),这里n=8,所以真实值=移码 - 2 ^7=1000 0000-1000 0000=0,000 0000=+0

5.在机器数( )中,零的表示形式是唯一的。
A、原码
B、补码
C、补码和反码
D、原码和反码
我的答案:B
✪ 习题小总结:

移码 = 真实值 - 2^(n-1), n为存储空间长度(机器数的长度)
补码 = 真实值 + 2^n, n为存储空间长度(机器数的长度)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章