千锋教育威哥学Java——关于Byte数组溢出问题代码详解

当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时,

这个整型变量所输出的值将发生紊乱,且不是预期的运行结果。

当使用类型转换给byte类型的数据赋值时:

数值范围小的数据类型可以直接赋值给数值范围大的数据类型,无需进行类型转换

数值范围大的数据类型赋值给数值范围小的数据类型时需要进行强制类型转换。

当超出范围则会伴随数据溢出,如:

Java中byte类型的数据范围为-128~127

int i = 200;

byte b2 = (byte) i;

System.out.println(b2);

此时输出结果为-56,为什么?

原因在于,计算机在存储及对数据进行运算时都是以二进制补码的形式进行的,此时是int类型,二进制为32位,即00000000000000000000000011001000,存储时会转换为补码:

00000000000000000000000011001000(正数的原码和补码相同),当进行类型转换运算时,byte类型仅占一个字节,即八位二进制数,则转换时直接截取后八位,得到11001000,其中最高位为符号位,此为转换后的补码,展示给用户时,需将该补码转换为原码,即符号位不变,按位取反再加1,得到10111000即-56 。

需要更多教程,微信扫码即可

 

👆👆👆

别忘了扫码领资料哦【高清Java学习路线图

【各学科全套学习视频及配套资料

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值