java计算器源代码 补码计算器?

补码计算器?1.二进制补码的计算方法二进制补码计算非常简单。各种教材中经常用二进制来说明源代码、反码和补码之间的关系。有一定基础的人都知道规则:1.1原始代码最高位是符号位,0表示正数,1表示负数。比

java计算器源代码 补码计算器?

补码计算器?

1.二进制补码的计算方法

二进制补码计算非常简单。各种教材中经常用二进制来说明源代码、反码和补码之间的关系。有一定基础的人都知道规则:

1.1原始代码

最高位是符号位,0表示正数,1表示负数。

比如X=0b11 (3),四位代表原码=0011(3);X=-0b11(-3),四位代表原码=1011(11);

1.2逆代码

最高位是符号位,0表示正数,1表示负数。

正数的倒数等于自身,负数的倒数除了符号位以外都是反相的:

比如X=0b11 (3),四位表示原码=0011(3),对应的逆码为=0011(3);X=-0b11(-3),用四位表示原码=1011(11),对应的逆码=1100(12);

1.3补充

最高位是符号位,0表示正数,1表示负数。

正数的补数等于自身,负数的补数等于逆1:

比如X=0b11 (3),四位表示原码=0011(3),对应补码=0011(3),补码=0011(3);X=-0b11(-3),用四位表示原码=1011(11),对应补码=1100(12),补码=1101(13);

2、十进制补码计算方法

对于十进制数,通过前面的性质不难得到正十进制数的补数等于自身。对于负十进制数来说,一点一点操作就太麻烦了!为了说清楚,我们先从补语的成因说起:

“补语加一”只是补语的一个性质,不能定义为补语。负数的补码是一种二进制码,可以和它的倒数相加,使计算机中的计算结果通过溢出变成0。这是补码设计的初衷,具体目标是使1 (-1)=0,用原码无法得到:

在补充中:

因此,对于具有n位的负数-X,存在以下关系:

因此,假设寄存器是n位的,那么-X的补码应该是

的二进制代码。

例如,前面的例子:

例如:X=-0b11(-3),四位表示原码=1011(11),对应补码=1100(12),补码=1101(13);

如果寄存器有4位,对应于-3的补码二进制数是13,正好是

十进制数的补码等于自身,N位寄存器下的-X的补码等于

相应的二进制代码。

如果使用python,可以使用amp快速获得补码:

-3amp0xf输出[1]: 13 5amp0xf输出[2]: 5

这里的0xf指0b1111,即4位寄存器。如果是7位寄存器,0b111111就是0x3f。

3.补码已知如何求原码?

对于正数,根据前面的介绍很容易知道原码=补码=逆码。接下来主要讨论给定负数的补码,如何求负数的原码:

3.1二进制

先下结论:补码的补码是原码。让我们开始证明:

已知的二进制补码是

,按照1.3中的过程求补。

事实上,该公式相当于:

可以简单证明,根据逆码的实际求解过程,可以得到如下公式:

当a=a-1时,有:

以上两个公式说明:

用文字描述,就是取其反面加一等于减一取其反面!

所以二进制补码有如下关系:

也就是说补码的补码就是原码,表示否定的东西就是肯定的。

3.2十进制系统

N位寄存器中-X的补码等于

相应的二进制代码。

(1)在十进制系统的情况下,如果给定的补码是一个无符号数

,那么原始代码是

去做吧。

例如,第一个-3补码的无符号数是13,对应的原始代码是

(2)在十进制的情况下,如果给定的补数是有符号数-Y,则对应的无符号数为

,那么原始代码是。

例如,前3补码的有符号数是-5,对应的原码是

2021年10月30日编辑1:39