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

首先需要明确,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 了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值