您的位置首页百科知识

为什么正数原码反码补码相同?

为什么正数原码反码补码相同?

的有关信息介绍如下:

为什么正数原码反码补码相同?

找了很多其他网站的回答,包括查看反码补码的定义可能都没解释清楚。正数的反码和补码和正数原码根本就不相同,或者说正数没有反码和补码,只有按位取反!!!

答案是:计算机用正数的原码表示正数,计算机用负数的补码表示负数!

所以根本就没用计算机的反码补码表示正数,要是对正数进行按位取反根本得到的是另一个二进制数!

举个栗子: 如果算 ~5

5原码: 0000 0101

那么 ~5: 1111 1010

1111 1010 这玩意是 -6 的补码,来看-6:

-6 原码:1000 0110

-6补码为 原码按位取反后+1,即 1111 1010,这个补码就是 上面的~5的二进制结果。

进行5-1或5-6 怎么办?

5 原码: 0000 0101

-1 原码:1000 0001

-1 补码:1111 1111

-6原码:1000 0110

-6补码:1111 1010

所以“5-1”5的原码和-1的补码进行加法计算,然后,根据加法得到的二进制数的正负号进行补码运算,如果加法得到的二进数首位为0,即正数,那么就不用变了,因为说了“计算机用正数的原码表示正数”,如果加法得到的二进制首位为1,那说明是负数,这个二进制是补码,是计算机表示负数用的,那要换算回10进制,需要把这个首位为1的二进制进行补码:

5-1:

0000 0101+1111 1111=0000 0100 (这个首位是0,所以不用补码换算,直接换算为十进制就是4)

5-6:

0000 0101+1111 1010=1111 1111 (首位是1吧,说明这是一个负数的补码,注意是补码,然后再取补码得到1000 0000+1,为1000 0001,换算为十进制就是-1)

看怎么定义正数的反码和补码,

如果定义正数的反码为按位取反,那正数的反码根本就不是它本身。