byte a=(byte)130 输出-126求大神说明下

来些步骤 谢谢

--来自网页客户端
已邀请:

风清扬 - Faith without works is dead

赞同来自: admin

首先130是int类型,byte类型范围在-128~127,
130超出了byte类型的范围了,这时我们的需求是将130强制类型转换成byte类型,第一步先求出130的二进制:
00000000 00000000 00000000 10000010
因为是正数所以原反补码都是一样的,因为强转成byte类型所以只能留八位即10000010,这时只要求出10000010(补码)的原码就可以了,反码是10000001,原码是11111110。结果是-126

--来自移动客户端

lbl823272114

赞同来自: zhouyou admin

image.png


看看吧不清楚再追问

--来自移动客户端

zhouyou

赞同来自:

超出范围。127。剩余3,+1是 -128,+1是-127,+1是-126。所以输出是-126。

--来自移动客户端

czx663 - 业余爱好者

赞同来自:

130默认是int类型,二进制表示为00……10000010,强制转换为byte的类型就只有八位,即10000010,这最高位1表示负数,即为反码,原码为011111110,十进制126,所以10000010为-126

--来自移动客户端

admin

赞同来自:

这些回答,真棒!

--来自网页客户端

Aquarius

赞同来自:

越界了

--来自移动客户端

要回复问题请先登录注册

Template error, template file not found