为什么int类型的-129转换成byte类型的会变成127?

 我来答
燕阵希冬莲
2019-03-04 · TA获得超过3715个赞
知道大有可为答主
回答量:3163
采纳率:32%
帮助的人:204万
展开全部
1.
int类型一般是4个字节,一个字节有8位,这样int型数据二进制的完整形式有32位,而byte表示一个字节,于是byte类型数据二进制的完整形式有8位。
2.
二进制数据在计算机内是以二进制存储的,要注意一点,计算机在存储某个数据时,是存储的数据的补码,说明一下补码与原码关系,正数补码与原码相同,负数补码是原码减1后取反。
3.
根据上面阐述,129的原码是00000000
00000000
00000000
10000001
,负数最高位取1,那么-129便是10000000
00000000
00000000
10000001
,补码计算:减1为10000000
00000000
00000000
10000000
,再取反为11111111
11111111
11111111
01111111(最高位是符号位,不参与取反),现在转换为byte,只有8位,于是只能保留低8位,前面24位丢去,得到01111111,这就对应着十进制的127.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式