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

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

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

慕妹3242003 2019-04-09 20:25:50
intiValue=233;bytebValue=(byte)iValue;//int强制转化为byteSystem.out.println(bValue);如上,输出结果是什么?为什么?
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

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

TA贡献1785条经验 获得超4个赞

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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号