为了账号安全,请及时绑定邮箱和手机立即绑定

int强制转化为byte,得到什么?

int强制转化为byte,得到什么?

肥皂起泡泡 2019-04-08 11:19:13
intiValue=233;bytebValue=(byte)iValue;//int强制转化为byteSystem.out.println(bValue);如上,输出结果是什么?为什么?
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

计算机中数值都是以二进制补码的形式存储
二进制数值的第一位代表数值的符号(正数为0,负数为1)
其中正数的补码等于其原码
负数的补码等于其原码(除符号位)的反码+1
java中
int占32位
byte占8位
int233=00000000000000000000000011101001
强转后去掉前面的24个0,得11101001
补充:补码转换为原码的规则:对该补码再次求补码
接着判断首位是1,为负数,取补码得10010110+1=>-23
                            
查看完整回答
反对 回复 2019-04-08
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

楼上正确,补一下官方文档:
jls7,5.1.3NarrowingPrimitiveConversion
AnarrowingconversionofasignedintegertoanintegraltypeT
simplydiscardsallbutthenlowestorderbits,wherenisthenumber
ofbitsusedtorepresenttypeT.Inadditiontoapossiblelossof
informationaboutthemagnitudeofthenumericvalue,thismaycause
thesignoftheresultingvaluetodifferfromthesignoftheinput
value.
                            
查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 327 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信