当前位置:首页 > 科技 > 正文

反码补码原码怎么转换,原码反码补码转换关系图

反码补码原码怎么转换,原码反码补码转换关系图

大家好,今天给各位分享反码补码原码怎么转换的一些知识,其中也会对原码反码补码转换关系图进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就...

大家好,今天给各位分享反码补码原码怎么转换的一些知识,其中也会对原码反码补码转换关系图进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

原码反码补码计算器

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的话,可以使用&来快速获取补码:

-3&0xfOut[1]:135&0xfOut[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-3013:39

19的原码反码补码计算

一般是按8位二进制来做,所以-19的原码是(10010011),反码是(11101100),补码是(11101101)。

数据在计算机中是以二进制的形式存在的,比如bytea=6;byteb=-6

分为两种情况来说,一种是正数,一种是负数;对于正数6来说,原码就是00000110,反码和补码也是这个;而对于-6来说,原码就是10000110,这是为什么呢?因为最高位(最左边的)是表示符号,0表示正数,1表示负数;

不管是byte,short,int还是其他的数字,最高位都是用来表示符号的,所以-6的原码就是10000110,负数的反码就是符号不变,其他的取反,就是11111001;负数的补码就是在反码的基础上加1就行了,由于是二进制的,是逢2进1,所以补码就是:11111010,;

?

25的原码反码补码

原码、反码、补码是三种不同的二进制数表示方法,它们主要用于计算机中表示有符号整数。25的原码是00011001,反码是00011001,补码是00011001,因为正整数的原码、反码、补码完全一样。

78的原码反码补码是多少

78的原码反码补码都是1001110。

数字78是一个正数,正数的原码,补码,反码相同,先求原码,因为正数的原码就是他的真值.负数的原码是在正数的原码基础上,最高位置1,即符号位.然后再求反码:符号位1不变,后面的所有位取反,然后再求补码:在反码的基础上,末尾加1。

78的二进制等于1001110。那么他的反码和补码与他的原码相同,也为1001110。

-70的原码反码补码

70的原码为01000110

那么70的反码为10111001

70的补码为10111001------------反码、补码一样,但是意义不同.

反码和原码转换

反码的表示方法是:正数的反码是其本身,负数的反码是在其原码的基础上,符号位不变,其余各个位取反。

[+1]=[00000001](原码)=[00000001](反码)[-1]=[10000001](原码)=[11111110](反码)可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值。通常要将其转换成原码再计算。

文章分享结束,反码补码原码怎么转换和原码反码补码转换关系图的答案你都知道了吗?欢迎再次光临本站哦!

最新文章