解决方法很多!这个没有为什么,它本身就没有,补码的最高位表示符号,1为负,0为正
我们都知道计算机中的数据是用补码表示的。相信大家对他们的概念都比较熟悉了,现在说一下需要注意的几个地方。我们暂且用8位表示。
1、原码的表示范围是-127~+127共256个。(包含一个+0和-0)。正是由于原码有正负零之分,给我们的运算带来了很大的麻烦。所以才引进反码。
2、反码的表示范围是-127~+127共256个。(包含一个+0和-0)。
正数的反码与原码相同。负数的反码,首位(符号位)不变,其他位取反。
例:+0反码是:00000000
-0反码是:11111111(符号位是1,其他位取反)
3、补码的表示范围是-128~+127共256个。
例:+0的补码:00000000
-0的补码:00000000(反码加1)
例:-127的补码怎么计算呢?
-127原码是11111111--->反码为10000000---->补码为10000001。即在计算机中,10000001就表示-127。
4、在这8位系统中,-128没有相对应的原码和反码,它在计算机里面的表示形式是:10000000
所以,计算机为32位的时候,10000000000000000000000000000000表示-2(31)。2的31次方。
5、对于编程语言中的移位运算,比如一个32位的int型左移33位,这样的话我们可以取模运算。即对于n>32的数,语言规定的就是实际移位数为(n-32)。比如左移33位,实际上和左移1位是相同的。