计算机语言 二进制补码
发布网友
发布时间:2022-05-09 16:48
我来回答
共1个回答
热心网友
时间:2023-10-09 13:53
计算机对正负的表示是通过最高位来体现的,即0,111是正数,(10进制中是7),1,111是负数(10进制中是-7),代表符号位的0或1与之后的数用逗号隔开。
在补码中正数的补码与原码相同,即:0,111的补码还是0,111,所以很好讨论;
但对于负数的补码则是取反加+1(符号位不变),即:1,111先取反码1,000,再+1得1,001;
补码的正负由于符号位不变,所以当第一位是0,无论原,反,补码都是正数,同理第一位是负,则原,反,补码都是负数
至于你问的“在负数1前加0不是又变成正数了 我想问 哪一位才是最前那一位?”
在计算机中是不能直接把一个0或1插到数中的,但可以通过移位来实现,这在计算机中是很方便实现的。
正数因为补码等于原码所以非常容易讨论;
但负数补码的移位不好解释,简单的说就是
左移的时候再最后面添个0,例1,110(-2)左移一位得1,100(-4)
右移的时候再最前面添个1,例1,110(-2)左移一位得1,111(-1)
注意这里的最前与最后都是逗号之后的那个0或1,符号位雷打不动!
最后说一下在负数1前加0不是又变成正数了这句话本身就是不对的,所以不要在这个地方纠结