补码运算的基本规则是x补+y补 x+y补(求补运算和求补码的区别)
- 软件开发
- 2023-09-19
- 93
本篇文章给大家谈谈补码运算的基本规则是x补+y补 x+y补,以及求补运算和求补码的区别对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希...
本篇文章给大家谈谈补码运算的基本规则是x补+y补 x+y补,以及求补运算和求补码的区别对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
x补码与y补码乘积运算
X的补码为0.1010,-X的补码为1.0110,Y的补码为1.1001(低位有4位)。
高位低位(乘数补码处理值)说明
000000|110010最低位10,高位加-X的补码
110110
————
110110
11101101|1001执行右移,最低位01,高位加X的补码
001010
————
000101
00001010|1100执行右移,最低位00,高位加0
000000
————
000010
000001010|110执行右移,最低位10,高位加-X的补码
110110
————
110111
1110111010|11执行右移,乘数补码被右移出去,进行最后一次
000000运算,最低位11,高位加0
————
1110111010|11
最终结果为11.10111010,因为补码一位乘结果用的是双符号位,换成单符号位就是1.10111010。
我总结了点补码一位乘的方法,给你参考下
处理对象:被乘数补码*乘数补码=两数积的补码。
预处理:1、单独算出被乘数的相反数的补码,同时乘数补码往右扩一位补0(乘数补码处
理值),积的符号位与其余位必须一同计算。
2、两数补码相乘拆分为多个加法运算。
3、每次加法运算分为高位和低位两部分处理,高位初始值为0、位数是在带符号被乘
数位数基础上向左扩一位(利于右移),低位初始值是乘数补码处理值、位数与乘数
数据位位数相同。
第一次加:4、第一次加法是由高位和加数相加,加数的值由乘数补码处理值的最低两位确定
(若为01,加数为被乘数补码,若为10,加数为被乘数的相反数的补码,若这两位
的数值相等,则加数为0;加数左边多余的一位根据其符号位确定补0还是补1,符
号位为0则补0,符号位为1则补1)。
5、此次加法运算结束后,加法运算所得的高位(部分积)与低位合成一个整体并右移1
位得到新的高位和低位(右移时左边补0还是补1由右移前的符号位确定,符号位为
0则补0,符号位为1则补1,,另外在右移时乘数补码处理值也连带着右移)。
第二次加:6、高位再次进行加法处理,加数的值由新得到的乘数补码处理值的最低两位确定(确
定方法同第4点)。
7、此次加法运算结束后,加法运算所得的高位(部分积)与低位合成一个整体并右移1
位得到新的高位和低位(右移时高位左边补0或1的确定方法同第5点,另外在右移
时乘数补码处理值也连带着右移)。
循环加法:8、按“第二次加”的方法循环,直至低位将乘数补码处理值的每一位都右移出去后,
再进行一次加法运算(此次加法运算结束后不进行右移),此时得到的高位和低位
合成一个整体就是最终乘积,这个最终乘积是双符号位。
9、所得的最终乘积的小数位数必须是被乘数补码与乘数补码的小数位数之和。
关于双符号位:00正,11负,01上溢,10下溢。
附注:无论是原码一位乘,还是补码一位乘、补码二位乘,与手工算法都有共通之处,都是根据
乘数每一位(或两位)的状态在被乘数的基础上来确定加数(如被乘数、被乘数补码、被
乘数相反数补码、0),因为乘数是二进制的,每一位只有0、1两种状态,所以又免去
了手算十进制乘法中以乘数每一位去乘被乘数来确定加数的过程,而右移所得的部分
积就相当于手算乘法中左移加数。
觉得有用点个赞吧
串行加法器补码运算公式
补码加法公式:x补+y补=(x+y)补
6F=使用补码原理完成如下算式3D使用
先把十六进制数转成二进制数,每一位十六进制对应四位二进制6=0110F=11116FH=01101111B在8位二进制数中,最高位为符号位,0表示正,1表示负。所以:-6FH=11101111B即:-6F的原码为:11101111反码:符号位不变,其余按位取反:10010000补码=反码+1=10010001先转二进制:3DH=00111101B正数的反码和补码都等于原码,[3D]补=00111101[-6F]补=10010001根据补码运算的减法规则:[X-Y]补=[X]补-[Y]补=[X]补+[-Y]补有:[3D-6F]补=[3D]补+[-6F]补=00111101+10010001=11001110再对“[3D-6F]补”取补码,可以得到“[3D-6F]原”的值。求反:10110001求补:10110010所以:(3D-6F)=10110010B=-50D
y的补码为00110100,那-y的补码是什么
符号位取反,数字位全部取反,最低位+1。(y)补=00110100(-y)补=11001100
通过变形补码计算x-y,同时判断是否溢出
1x-y=x+(-y)[x]补=10111[-y[补=1100101相加得1111100,对结果求补码为1100100,就是-001002同理算出来的是负数要再求补码才是结果。
二进制数补码的范围公式
8位补码范围是-128至127.
根据补码的几条规定即可推出上述结论:
1若二进制每位全为0,则表示数0
2若最高位(即符号位)为0,表示正数
3若最高位为1,表示是负数,而该负数的绝对值是多少呢?将每个二进制位(包括符号位)取反加1,得到一个二进制数,将该数看成无符号数,其值就是上述负数的绝对值。
例如,二进制的10000000的最高位为1,所以它表示的是负数。是负的多少呢?我们将其八位全部取反,得到01111111,然后加1,得到10000000.将该数看作无符号数,值为128,故计算机中的10000000表示的是-128。【关于这一点要死记硬背了,可以参考下面列出的对比数记忆】
最高位(即符号位)为1的8位有符号数有128个,故可表示128个负数;最高位为0的8位有符号数有128个,但全0的那个表示数0,所以总共只能表示127个正整数。
文章分享结束,补码运算的基本规则是x补+y补 x+y补和求补运算和求补码的区别的答案你都知道了吗?欢迎再次光临本站哦!
本文链接:http://www.xinin56.com/ruanjian/27471.html