计算机组成原理笔记(在更)

原、反、补、移码

原码、补码、反码、移码的转换

求原码:先区分正负

  • 去掉符号,正数前面+0
  • 去掉符号,负数前面+1
x:+0010 1011 0100
x原:0 0010 1011 0100
y:-1100 0101 1001
y原: 1 1100 0101 1001

反码:先区分正负

  • 去掉符号,正数前面+0
  • 去掉符号,负数前面加个1,01求反
x:+0010 1011 0100
x原:0 0010 1011 0100
x补:0 0010 1011 0100
y:-1100 0101 1001
y原:1 1100 0101 1001
y补:1 0011 1010 0110

求补码:先区分正负

  • 去掉符号,正数前面加个0,不用求反
  • 去掉符号,负数前面加个1,求反,最后值+1
x:+0010 1011 0100
x原:0 0010 1011 0100
x补:0 0010 1011 0100
x反:0 0010 1011 0100
y:-1100 0101 1001
y原:1 1100 0101 1001
y补:1 0011 1010 0110
y反:1 0011 1010 0111

求移码:无需区分正负

  • 在补码的基础上,不区分正负,符号位1变0,0变1
x:+0010 1011 0100
x原:0 0010 1011 0100
x补:0 0010 1011 0100
x反:0 0010 1011 0100
x移:1 0010 1011 0100
y:-1100 0101 1001
y原:1 1100 0101 1001
y补:1 0011 1010 0110
y反:1 0011 1010 0111
y移:0 0011 1010 0111

已知补码,求真值

  1. 先通过符号位区分正负
    1. 如果为正,则补码=原码
    2. 如果为负数,则补码的补码=原码
x补: 0 1100 0110
则x原: 0 1100 0110
y补: 1 0010 1000
[y补]补: 1 1101 1000

已知补码,求和/差值

公式[x ± y] = ([x] + [±y] )mod 2n

溢出

溢出:通过正数求和或负数求和,所得到的数的结果超过计算机所能表达的最大值。

现象

正数求和,等于负数

负数求和,等于正数

exp
求和:
x1:0 1011  y1:0 1001
x1补:0 1011 y1补:0 1001
s1补 = x1补 + y1补
s1补 = 1 0100
两个正数相加,答案是负数,上值溢出
如何检验溢出?

检验溢出有两种方法

1.双位检验法

将符号位变为两位,通过观察两位符号位的异或关系[1]来判断,如果异或关系为1,则溢出。

双位检验法
例1:
x1:00 1011  y1:00 1001
x1补:00 1011 y1补:00 1001
s1补 = x1补 + y1补
s1补 = 01 0100
符号位做异或运算,结果为1,说明溢出
例2:
x2:00 0101 y2:00 0011
x2补:00 0101 y2补:00 0011
s2补 = x2补 + y2补
s2补 = 00 1000
符号位做异或运算,结果为0,说明未溢出

缺点:额外占用了一位空间

[1]异或取值结果:

xyx ⊕ y
000
011
101
110
2.单位检验法

原理同双位检验法相同,只不过额外定义一个变量z,来储存额外的符号位,不在占用额外的空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值