Java左右移位操作和数据类型转换时的溢出问题

一、Java的左右移位操作

将10进制转化为2进制进行移位操作,例:

<span style="white-space:pre">	</span>int i=10>>2;
<span style="white-space:pre">	</span>System.out.println(i);
结果为1;即将1010(2进制)向右移位3次,空位由0填充,变为0001(2进制),转为十进制为1

注:溢出的部分不再考虑  可以将右移位操作看做整除操作,结果取整数,如10>>2等价于10/2^3=1

二、数据转换时的溢出问题

将大范围数据类型强制转换为小数据类型时容易发生溢出(这里不再阐述数据类型转换),溢出后的结果为  原操作数%小数据类型的最大范围  然后得出的数从小数据类型的0处向后遍历,得出的结果即为溢出后显示的结果  例:

<span style="white-space:pre">	</span>int i=128;
<span style="white-space:pre">	</span>byte j=(byte)i;
<span style="white-space:pre">	</span>System.out.println(j); 
j的结果为-128,如果i+1,则j=-127以此类推

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值