位移运算越界怎么处理
2014-04-18 13:32
197 查看
请看下面的代码输出结果是多少?
int
a=5;
System.out.println(a<<33);
按照常理推测,把a左移33位应该将a的所有有效位都移出去了,那剩下的都是零啊,所以输出结果应该是0才对啊,可是执行后发现输出结果是10,为什么呢?因为Java语言对位移运算作了优化处理,Java语言对a<<b转化为a<<(b2)来处理,所以当要移位的位数b超过32时,实际上移位的位数是b2的值,那么上面的代码中a<<33相当于a<<1,所以输出结果是10。
int
a=5;
System.out.println(a<<33);
按照常理推测,把a左移33位应该将a的所有有效位都移出去了,那剩下的都是零啊,所以输出结果应该是0才对啊,可是执行后发现输出结果是10,为什么呢?因为Java语言对位移运算作了优化处理,Java语言对a<<b转化为a<<(b2)来处理,所以当要移位的位数b超过32时,实际上移位的位数是b2的值,那么上面的代码中a<<33相当于a<<1,所以输出结果是10。
相关文章推荐
- java对位移运算越界的优化
- 字段返回null值,却需要进行运算怎么处理?
- 批处理只执行第一句,其他的不被执行,怎么办?
- 当你用ps的椭圆工具 画一个圆时有黑边怎么处理
- vs2013在图像处理中的应用(2):用sympy进行符号运算
- 图像处理:基础(模板、卷积运算)
- 怎么将pdf文件进行压缩处理
- 【CodeForces 155C Hometask】白濑肆×字符串+DP——果然是字符串处理什么的好讨厌啊尤其是换行符的处理看来不用CIN不行了呢DP的转移真心不会啊水到家了怎么办!【1.1%达成】
- 转Asktom:Oracle中怎么处理in的动态SQL语句.
- 处理字符串时如何选择buffer的大小和分配方式 - 看看 redis 是怎么做的
- linux下 c中怎么让才能安全关闭线程 和 linux线程退出时执行的程序(线程清理处理程序)简单例子
- VS2012+openCV 2.4.8进行编译:VS2012 64位 使用OPENCV应用程序不能正常启动 (0xc000007b)怎么处理?
- 图像处理——灰度化、二值化、膨胀算法、腐蚀算法以及开运算和闭运算
- 当ligerui的grid出现固定列与非固定列不在同一水平线上时,改怎么处理
- Java 中的位移运算
- 怎么处理警告:编码 GBK 的不可映射字符
- JS--处理浮点数运算精度失真
- CI中REST URL含有中文怎么处理(报错:The URI you submitted has disallowed characters)
- 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- CUDA用于图像处理中的形态学开闭运算