为什么正数原码反码补码相同?
的有关信息介绍如下:
找了很多其他网站的回答,包括查看反码补码的定义可能都没解释清楚。正数的反码和补码和正数原码根本就不相同,或者说正数没有反码和补码,只有按位取反!!!
答案是:计算机用正数的原码表示正数,计算机用负数的补码表示负数!
所以根本就没用计算机的反码补码表示正数,要是对正数进行按位取反根本得到的是另一个二进制数!
举个栗子: 如果算 ~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)
看怎么定义正数的反码和补码,
如果定义正数的反码为按位取反,那正数的反码根本就不是它本身。



