java中的byte的取值范围为什么是-128~127?

来源:互联网 发布:未来网络发展趋势 编辑:程序博客网 时间:2024/05/18 17:42

首先需要明确,java是使用补码来表示二进制数的,在补码中,最高位为符号位,0表示正,1表示负。

例如:10 的原码为 000 010 10 ,(正数的原码、反码、补码都一样); 红色的0(符号位)表示该数是正数

-10的原码为 100 010 10,反码 111 101 01(负数的反码是除符号位的数取反(0变成1,1变成0,符号位不变)),补码111 101 10(反码加1,符号位会变

  byte占8bit位,先考虑正数的取值范围,000 000 00~011 111 11,正数的原码反码都一样,所以取值范围为 0 ~ 127,

再考虑负数的取值范围,100 000 00 ~ 111 111 11 反码为 111 111 11 ~ 100 000 00 补码为 1100 000 00 ~ 100 000 01 ,取值范围为-128 ~ -1(符号位)

所以,byte的取值范围就是-128 ~ 127 了。

原创粉丝点击