A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

java中Byte的取值范围-128~127一直没理解。
127好理解,Byte占一个字节8位,首位是符号位,最大值为0111 1111即127。
关键是-128,首位是符号位,那就是剩余的7位表示真值,最大为111 1111,最小为000 0000,那最小即为1000 0000,就是-128。
但不是说好首位是符号位了么?怎么负数算真值得时候又把首位1 给算进去了?
求解释。

评分

参与人数 1黑马币 +2 收起 理由
woshijingke + 2 神马都是浮云

查看全部评分

7 个回复

倒序浏览
冯领峰 来自手机 中级黑马 2016-5-10 18:19:36
沙发
这个,知道就行了,没必要纠结原因吧,java有一整套的规定,你不可能知道所有的原因
回复 使用道具 举报 1 0
success560 来自手机 中级黑马 2016-5-10 18:21:25
藤椅
没有--0 只有一个0,
回复 使用道具 举报
冯领峰 发表于 2016-5-10 18:19
这个,知道就行了,没必要纠结原因吧,java有一整套的规定,你不可能知道所有的原因 ...

但是不搞明白觉得很难受啊,
回复 使用道具 举报
success560 发表于 2016-5-10 18:21
没有--0 只有一个0,

{:3_65:}额,
回复 使用道具 举报
同问,想不通心里很难受啊
回复 使用道具 举报
1、byte为一字节8位,最高位是符号位,即最大值是01111111,因正数的补码是其本身,即此正数为01111111
十进制表示形式为127
2、最大正数是01111111,那么最小负是10000000(最大的负数是11111111,即-1)
3、10000000是最小负数的补码表示形式,我们把补码计算步骤倒过来就即可。10000000减1得01111111然后取反10000000
因为负数的补码是其绝对值取反,即10000000为最小负数的绝对值,而10000000的十进制表示是128,所以最小负数是-128
4、由此可以得出byte的取值范围是-128到+127
5、说明:各个类型取值范围的计算方法与此大致相同,感兴趣的同学可以自己试着计算
回复 使用道具 举报
128就是传说中的-0
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马