永发信息网

int i byte b i=428 b=(byte)i,为什么b=-84

答案:1  悬赏:60  手机版
解决时间 2021-11-20 18:55
  • 提问者网友:雨不眠的下
  • 2021-11-20 05:04
int i byte b i=428 b=(byte)i,为什么b=-84
最佳答案
  • 五星知识达人网友:过活
  • 2021-11-20 06:25
这个跟数据溢出有关
i=428, 用二进制表示为: 0000 0001 1010 1100
强制类型转换为byte时, 高位字节被舍弃, 所以 b= 1010 1100
所以是-84追问可是10101100转换成十进制不是-84啊追答计算机中,左边最高位表示符号位, 1表示负数,0表示整数
计算机对于数值的表示使用的是补码形式,因此
1010 1100 相当于 -0101 0100 就是-84
备注: 负数的补码转十进制: 结果为负, 将补码按位取反再+1, 得到的二进制直接转换成10进制
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯