大佬,我懵了,

舟桥居士 2019-10-08 09:56:05
byte b = (byte) 129; 执行完上述语句,变量b中存储的数据是啥
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
MightFence 2019-10-08
  • 打赏
  • 举报
回复
qybao 2019-10-08
  • 打赏
  • 举报
回复
我来补充一下吧
byte能表示1个字节长度的数据(也就是二进制8位长度),范围是-128(二进制10000000)~127(二进制01111111),其中二进制的最高位是符号位(高位为0是正数,为1是负数)
129默认是整形,有4个字节32位长度,其二进制是00000000 00000000 00000000 10000001
转换为byte,因为byte只有1个字节,所以截断整形的字节取最低一个字节,就是10000001
因为高位是1,所以是负数,负数的二进制是原数的补码,补码就是除高位符号位外各位取反再加1,所以10000001除符号位外都取反就是11111110,再加1就是111111111,其十进制就是(符号位1代表负数不作计算,蓝色部分计算)-127
同样的,如果是-129,也是整形,其二进制是11111111 11111111 11111111 01111111(也就是00000000 00000000 00000000 10000001的补码,按照补码算法可以自己验证),转为byte,取最低字节01111111,高位为0,所以是正数,其十进制就是127



hurtCat 2019-10-08
  • 打赏
  • 举报
回复
129=0_1000_0001 最高位为符号位,129默认是int,所以应该有24个零,在此省略 (byte)会直接截取成1000_0001,最高位为1,所以是一个负数,换成原码为1111_1111,即-127

50,533

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧