计算机中定点数的储存原理,一篇文章学会定点数的运算(计算机组成原理知识点总结)...

一些需要知道的事情

1.符号扩展

在运算时我们发现题目基本会给机器字长8位这么一句话,但是打个比方3换为二进制是11只有两位,但是当它和6相加时就会出现问题,因为6是110,这个时候符号扩展就很有用了。

对于正数来说符号扩展很简单,附加位直接写0就可以。

对于负数来说:原码与正数无区别,反码则要全部补1,补码则是整数补1,小数补0

2.溢出判断

溢出分为两种,上溢(数太大)和下溢(数太小)。我们也可以推断出只有两个数相加才会发生上溢出,两个数相减才会发生下溢出。加减法出现溢出表示结果错误。

溢出的判断发法(其实一看应该就能看出来,这里主要是按照机器的思维走的。)

1)一位符号位:相加或相减的两个数符号位一致,在参与运算后,符号位发生了变化,则结果溢出。

2)通过进位判断:符号位的进位与操作数最高位的进位相同无溢出,否则溢出了。举个例子,比如加法运算符号位应该是0,最高位如果出现1+1的情况就要进位,进位为1,但是符号位为0,0+1不用进位,所以进位为0,0和1不相同就为溢出。

3)两位符号位:这个可能会更安全可靠一些,两个符号位如果相同则未溢出,不同则溢出了。

移位运算

逻辑移位(视为无符号数)

逻辑左移:高位丢去,低位补0;

逻辑右移:低位丢去,高位补0.

算数移位(视为有符号数):

在此过程中符号位不变

正数:由于原码等于反码等于补码等于真值,因此移位后出现的空位补0就可以。

负数:对于负数,则要根据情况:

类型移动数值原码左右均补0

反码左右均补1

补码左0右1

循环移位

循环移位又要细分:带标志位CF的大循环和不带CF的小循环。

循环移位顾名思义:移出的数据又会被移进来。

大循环和小循环的区别也很简单:

相当于多了一个CF位来加入循环。

看下图:

3fb3f0c35b2363e022edc919c4d43931.png

画得不好,但是很明显我们可以看出,带标志位的会加入循环移位的过程。它的作用在我看来就是将数据的高字节与低字节互换。

原码定点加减法运算

我们就按正常逻辑走:

1.判断符号位(全正则正全负则负)

2.符号位一样绝对值相加,再加上符号位就OK了。若是符号位不一样就做减法,绝对值大的数减去绝对值小的数,结果符号位与绝对值大的数相同。

如果出现溢出现象,将溢出位丢掉。

例子:

a30a63843635ec7b0439acbd17341e23.png

13c354032b266a3819de521064387540.png

补码定点加减法运算

补码运算必须要注意:

参与运算的两个数必须都是补码形式(博主曾经吃过亏…)

在计算的时候如果算出来结果溢出,需要进行模运算来丢掉溢出数据。

模运算的M是当定点整数:2的(n+1)次方,当定点小数:2

加法就直接相加,减法的话减数负数与被减数相加。

补码运算结果肯定也是补码。

例子:

078aaff2d0e3252e8f72af9e3083b20c.png

原码一位乘法运算

和正常思维一样:符号位进行异或运算。数值位的绝对值相乘。余下和乘法一样,但是要注意每一次乘完,记得右移。

例子:

ba5ed1ae6770f8bf1bead6ce6611053e.png

被乘数和部分积在考虑到绝对值出现大于1的情况往往采用双符号位。

补码一位乘法运算

补码一位乘法中符号位参与运算。

要注意在乘数的最后加一位初始值为0,通过判断最后一位和倒数第二位的值,若最后一位大则加被乘数的补码,移位时前边补0;若最后一位小则加被乘数的负数的补码,移位时前边补1;若最后一位和倒数第二位一样大加0,移位时前边补1;

8b1ce748a198fc8e85204aa41cdb90fc.png

原码除法运算

符号位另算,不恢复余数的原则下:

用被除数减去除数,余数为正数则商加一,余数和商左移一位,再减去除数;余数为负数则商上0,余数和商左移一位,再加上除数。

例子:

75e40acec29a2e7ccf2cd39d77a92b31.png

最后一点为×2的-4次方…

补码除法运算

方法中心想法是补码加减交替法。

举例:

4f37096b26edb8d13ea5fbb72ff30b6c.png

标签:知识点,运算,符号,补码,原码,移位,定点数,溢出

来源: https://blog.csdn.net/m0_50210478/article/details/110264682

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值