java问题麻烦详细解释一下(我知道是超出了表示范围)

java问题麻烦详细解释一下(我知道是超出了表示范围)
byte a=(byte)128;
byte b=(byte)(-129);
为什么a和b的值分别是-128,127
还有,short b=130;a=(byte)b;a的值为什么是-126
p13659058423 1年前 已收到1个回答 举报

天天爱你_ff 幼苗

共回答了15个问题采纳率:93.3% 举报

128是整数,二进制表示为00000000000000000000000010000000 (注32位整数)
转换为byte类型阶段为10000000 (8位)
而10000000最高位为1 ,表示负数,而后七位0000000恰好是-128的补码
补码计算方式:+128是10000000 取反 01111111 再加一就是 10000000了,
也就是 100000000代表的是byte类型的-128
其他是类似的自己转换一下.

1年前

5
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 2.156 s. - webmaster@yulucn.com