早教吧 育儿知识 作业答案 考试题库 百科 知识分享

java问题麻烦详细解释一下(我知道是超出了表示范围)bytea=(byte)128;byteb=(byte)(-129);为什么a和b的值分别是-128,127还有,shortb=130;a=(byte)b;a的值为什么是-126

题目详情
java问题麻烦详细解释一下(我知道是超出了表示范围)
byte a=(byte)128;
byte b=(byte)(-129);
为什么a和b的值分别是-128,127
还有,short b=130;a=(byte)b;a的值为什么是-126
▼优质解答
答案和解析
128是整数,二进制表示为00000000000000000000000010000000 (注32位整数)
转换为byte类型阶段为10000000 (8位)
而10000000最高位为1 ,表示负数,而后七位0000000恰好是-128的补码
补码计算方式:+128是10000000 取反 01111111 再加一就是 10000000了,
也就是 100000000代表的是byte类型的-128
其他是类似的自己转换一下.