首页 > 编程知识 正文

二进制补码转换十进制,二进制反码求和

时间:2023-05-06 18:02:29 阅读:144191 作者:3603

基本规则是

加法:

整数: [A]候补[B]候补=[A B]候补(mod2^(n1 ) ) ) ) ) ) ) ) ) )。

小数: [A]补[B]补=[A B]补mod 2

减法:

整数: [A-B]增补=[A]增补[-B]增补(mod2^(n1 ) )

小数: [A-B]增补=[A]增补[-B]增补mod 2

[-B]候补的求出方法是,包括[B]候补的符号比特在内,每个人都求出逆加法

ps:这里假设a、b都是正数

直接写负数补数后,直接计算就可以了。 [-B]补求[B]补求,还是[B]补求[-B]补求,都是通过对每个符号位求逆加,表现出本身,如果是补码,直接计算即可。

下面的例子可以很好地说明。

机器数字的长度为8位,1位作为符号位使用。 A= 15、B= 24时,求出[A-B]补全,恢复为真值。

ps:这里的还原你真的把求出的补数算出真的值不是用15 - 24=-9口算出来的吗?

解:首先转换为二进制代码。 a=15=0,0001111; b=24=0,0011000

转换为补数: [A]补数=0,000111,[B]补数=0,0011000,[-B]补数=1,1101000

以上是标准的计算前准备

[A-B]增补=[A]增补[-B]增补

0,0001111

1,1101000

=1,1110111

也可以考虑如下。 直接求出A-B补数进行减法运算:

0,0001111

1,1101000

=1,1110111从第9位(未知)借来2,求结果也是我们需要的补数。

真值为-9。

总结:无论操作数是正是负,补码运算时,只要将符号位和数值部分一起参与运算,自然舍弃符号位引起的进位即可。 也可以从更高的位数借用参加运算。 这样,符号的位数用1表示。 好啊。 我没有你大,会是负值。

这种减法形式的计算需要注意的是借位。

在十进制中:

1000

99

=901过程是这样的。 1000的一位不能用0减少。 从高位借来10,从高位看起来只有1,但从底部看是10。 是的,10可以减少9。 得到的一位是1。 1000的10位是0,而且1位借了一个,所以严格来说10位叫做-1。 是的,-1不能减少9。 需要从一百个位置借。 百的位在那之后是1,但从10的位来看是10,是的,10的位是借来的。 先还清自己的债务,只剩下9,9可以减少9,减少9。 1000的一百个人自己也是0,而且被借了一个人,所以等于-1。 借一千人,还债,剩下九,什么都不减。 于是最后变成了9。

所以得到了901。

同样,二进制也是同样的想法。

作为一例,要求1,0100011-1、1010011

1,0100011

- 0,0101101

=0,1110110

过程:也从第一位减少,1-1=0; 第二名:1-0=1; 第三名(0-1=1且第四名有1项债务);不看存款);

第4位)假设存款为0,负债为1,那自己就是-1啊。 不能减少1。 于是借2,先还清债务,留下1,减少1=0

第五名)债务也是1,借1,减去的是0,所以剩下的是1;

第六名)本来是1,借了第五名,只剩下0,不能减1,所以第七名借2,减1剩下1

第七名)自己是0,被第六名借到1,所以是-1。 要减0,先借2,还完债再留1,是减0还是减1

第八名)自己是1,被借走了。 好啊。 那剩下0了。 正好应该减少的东西也是0。 请不要再借了。 当然,需要借的时候也可以。 超过第八名后的东西,可以从虚空中拿来,不用还给我。

溢出判断:

1 .如果只有一个符号位,则实际参与操作的两个数。 如果是A-B,则表示是[A]补充和[-B]补充符号比特

即使这两个编码比特相同,如果求出的结果(补数结果)的编码比特不同,也将溢出。

有2.2位的符号。 两位符号不同时,表示溢出。 否则,没有溢出。

无论有无溢出,最高的符号位都表示真正的符号。

————————————————

这是CSDN博客“灾难恢复”的原始文章,符合CC 4.0 BY-SA版权协议。 请附上原文来源的链接和本声明。

原文链接: 3359 blog.csdn.net/u 011240016/article/details/5243355

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。