负数表示不是简单地将最高位变为1,比如:
1)byte a=-1,如果只是将最高位变为1,二进制应该是10000001,但实际上,它应该是11111111。
2)byte a=-127,如果只是将最高位变为1,二进制应该是11111111,但实际上,它却应该是10000001。
和我们的直觉正好相反,这是什么表示法?这种表示法称为补码表示法,而符合我们直觉的表示称为原码表示法,补码表示就是在原码表示的基础上取反然后加1。取反就是将0变为1,1变为0。负数的二进制表示就是对应的正数的补码表示,比如:
1)-1:1的原码表示是00000001,取反是11111110,然后再加1,就是11111111。
2)-2:2的原码表示是00000010,取反是11111101,然后再加1,就是11111110。
3)-127:127的原码表示是01111111,取反是10000000,然后再加1,就是10000001。
总结下来就是:负数的表示方式是,先写出其原码,按位取反,加1。
网友评论