二进制整数-原码反码补码-求反码时符号位是否取反?
1个回答
展开全部
说实话,我的脑海里一直,浮现一个奇怪的问题,就是在二进制整数求反码的时候,符号位到底是取反还是不取反?
印象中有时候取反也对,有时候不取反也对。直到今天,我看见一个视频,才恍然得知其中的缘由。实际上是:取反也对,不取反也对。 看你通过什么途径来做 。
我们通常的做法是:给一个正数,求其所对应的负数的补码,怎么求?
实际上有两种途径,(但两种途径背后的原理是一样的,只不过叫法不一样)
途径1:正数二进制-----负数原码-----负数反码-----负数补码
我们给一个正数3的二进制:0011
他所对应的负数-3的 原码 是:1011
然后-3的 原码对应的的反码 是:1100 (此时我们发现,这里是符号位不取反的)
然后,该反码对应的补码是: 1101 (也就是我们常说的:反码+1)
途径2:正数二进制---取反----对取反结果 +1
我们给一个正数3的二进制:0011
这个二进制取反得: 1100 (这里,符号位是取反了的)
将取反的结果 +1 得: 1101
我们发现,两种结果都一样,符号位取反不取反,结果都对。大佬们自然知道其中为什么会是这样,但是菜鸡的我们早已经绕的稀里糊涂。
根本原因在于:第二种途径,符号位都取反后,我们总是把他叫做反码,实际上这种叫法是不对的,这也是导致所有人迷惑的原因。
真正的反码是相对于负数原码来说的,没有原码的概念,不是对原码取反得到的结果,也就不能叫叫反码。
因此,严格点说,第二种途径不能将取反的结果称作反码,只能单纯的叫“取反的结果”
但是,第二种途径真的很好用,他是一种正数的补码和负数的补码互相转换的方法(正数的补码就是他的原码):
任何两个相反数的补码的相互转换,都可以用 “先全部取反,再+1”的方法来。
喜欢记得点赞,发个评论吐槽也可以呦。。。。
印象中有时候取反也对,有时候不取反也对。直到今天,我看见一个视频,才恍然得知其中的缘由。实际上是:取反也对,不取反也对。 看你通过什么途径来做 。
我们通常的做法是:给一个正数,求其所对应的负数的补码,怎么求?
实际上有两种途径,(但两种途径背后的原理是一样的,只不过叫法不一样)
途径1:正数二进制-----负数原码-----负数反码-----负数补码
我们给一个正数3的二进制:0011
他所对应的负数-3的 原码 是:1011
然后-3的 原码对应的的反码 是:1100 (此时我们发现,这里是符号位不取反的)
然后,该反码对应的补码是: 1101 (也就是我们常说的:反码+1)
途径2:正数二进制---取反----对取反结果 +1
我们给一个正数3的二进制:0011
这个二进制取反得: 1100 (这里,符号位是取反了的)
将取反的结果 +1 得: 1101
我们发现,两种结果都一样,符号位取反不取反,结果都对。大佬们自然知道其中为什么会是这样,但是菜鸡的我们早已经绕的稀里糊涂。
根本原因在于:第二种途径,符号位都取反后,我们总是把他叫做反码,实际上这种叫法是不对的,这也是导致所有人迷惑的原因。
真正的反码是相对于负数原码来说的,没有原码的概念,不是对原码取反得到的结果,也就不能叫叫反码。
因此,严格点说,第二种途径不能将取反的结果称作反码,只能单纯的叫“取反的结果”
但是,第二种途径真的很好用,他是一种正数的补码和负数的补码互相转换的方法(正数的补码就是他的原码):
任何两个相反数的补码的相互转换,都可以用 “先全部取反,再+1”的方法来。
喜欢记得点赞,发个评论吐槽也可以呦。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询