Java左右移位操作和数据类型转换时的溢出问题
2016-07-12 20:01
1491 查看
一、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进制转化为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以此类推
相关文章推荐
- Java编程中操作XML文件(生成方法一:DOM)
- java 中|| 和 && 的运算原则
- Spring AOP切面实现:异常处理
- java类中为什么设置set和get方法操作属性
- java中泛型的上下限
- 解决eclipse拉伸图片即后缀名为.9.png的图片问题
- ActiveMQ学习(三)--结合Spring的Demo
- java面向对象
- Java编程思想第四版第十二章学习——通过异常处理错误(1)
- Spring 小示例
- Java编程中操作XML文件(解析方法四:DOM4J)
- JavaEE学习笔记之SSH—Struts2(2)
- Java编程中操作XML文件(解析方法三:JDOM)
- 搭建spring的开发环境
- 3.Hibernate中java对象的三种状态
- spring3.1+ehcache整合过程出现的bug
- JDK安装
- Java编程中操作XML文件(解析方法二:SAX)
- HibernateDaoSupport详解
- Java编程中操作XML文件(解析方法一:DOM)