首页 > 编程知识 正文

补码取反加一的原理,补码等于原码取反加1

时间:2023-05-04 20:07:32 阅读:152451 作者:3228

我现在知道补数是怎么来的。 也就是说,这是为了保证两个相反数对应于二进制数之和必须为0。 而且,我不知道是谁给它起了补数这个名字。 补数补数,你不觉得两个反数是互补的吗? 也就是说,任意两个相反数相加一定为0。 如果一个数变大,另一个一定会变小,互补保证结果为0。 但你一定还在烦恼。 为什么要根据位置取反呢? 为什么要添加? 实际上,这涉及到二进制减法的问题。 既然知道补数这个概念,就一定知道有进位的丢失。 现在我们知道补数是怎么来的了。 也就是说,(00000000 )

_

一个正数的补数() ) ) ),因为发现1的二进制数为00000001,所以试着求出-1的补数,即0000000

_

00000001=? 我们该怎么计算这个二进制数的减法呢? 而且是从小数里减去了大多数,连借位的地方都没有。 前面已经提到了进位的丢失,11111111 00000001=? 知道进位丢失的你一定知道加起来会是000000000。 结果应该是100000000 (后面是8个0 ),但是只有8位,所以如果最高位的1丢失了,现在可以了。 也就是说,可以将000000000视为(11111111 00000001 )。 因为他俩相等。 那么,要计算(11111111100000000000 )即-1的补数,需要计算0-1的代码,即0000000000-0000000001,即(1111111110000000001 ) 0001 是的,你发现了一件至今为止一直困扰着你的东西。 “逐位倒过来再加一个”,可能还有点迷茫。 我们继续。 因为我们每次都是用一个0减去一个数的补数来得到另一个数的补数,即中的(111111111100000001 )。

一定数量的补数=相反数量的补数,去掉括号吧。 也就是11111111 -

一个数的补数00000001=相反数的补数。 这是加法交换定律,只要交换位置,小学生也能做到。 另外,添加括号容易理解。 即(1111111 ) )。

-一个数的补数(00000001=相反数的补数。 那么,发生了问题。 (11111111 -

一定数量的补数) )的结果是什么? 这在你心里应该很清楚。 可以试着计算一下。 它正好与其相反的代码,也就是每比特取相反的一个数。 其实可以理解。 减少一些数量就能看到规律,说明很麻烦。 现在很好。 也就是说(11111111 )。

-一个数的补码(=此数的反码,即(11111111 -)-)

一个数的补数()把这个数按位数取反的话,到现在,你应该很清楚他是怎么来的了。

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