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

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

无符号数顾名思义也就是不带符号的数
若机器字长为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 , 即-256~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求补码
在这里插入图片描述
方法二:补码用公式法怎么来求
在这里插入图片描述
例题:当X= -1001时,【X】补是多少?

解析 :由题意知n=4
[X]补 = 2^n+1 + X = 2^5 - 1001=1,0 0000 -1001 = 1,0011

但是在反求真实值X的时候发现按公式得
X [X]补 - 2^n+1 = 1,0011 - 1,0 0000 = 0,0011 = +0011-1001**

所以当反求真实值X时用这个公式妥妥的 补码真实值 = 2^n+1 - 补码,算出之后,真实值符号变相反 ,n为真值位数!!

那上面那道例题来说:

解析: X= 2^n+1 - [X]补 =2^5-1,0011=1,0 0000 - 1,0011 = 001101(前面的0舍去)=0,1101,符号位在变相反即1,1101

✪ 移码 ✪

当真值用补码表示时,由于符号位和数值部分一起编码,由于计算机无法分辨“,”逗号,所以人们很难从补码的形式上辨别其大小,例如: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,000 0000= +0或1,000 0000 = -0,由于0的补码只有一个,即为0
(补码另一种方法(公式法):真实值= 2^n - 补码,这里n=8,真实值=2 ^8 - 补码=1 0000 0000 - 0000 0000=1 0000 0000(前面的1舍去)为0,000 0000, 符号位在变相反即为1,000 0000 = -0)
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
(补码另一种方法(公式法):真实值= 2^n - 补码,这里n=8,真实值=2 ^8 - 补码=1 0000 0000 - 1111 1111=0 0000 0001(前面的0舍去)为0,000 0001, 符号位在变相反即为1,000 0001 = -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为存储空间长度(即机器数的长度,并非真值长度,机器数的长度比真值长度多1)
② 补码 = 真实值 + 2^n(当真值是负整数时,n为存储空间长度(即机器数的长度)
③ 补码真实值 = 2^n - 补码,算出之后,真实值符号变相反 ,n为存储空间长度(即机器数的长度)!!
④ 0表示正号,1表示负号,这样把符号数字化得数成为机器数,把带“+”,“-”的数称为真值

  • 13
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值