Java基础总结——移位
来源:互联网 发布:h5制作软件 编辑:程序博客网 时间:2024/06/05 15:37
Java中的移位包括如下三类:
- >>,右移符号位填充,负数高位填充1,正数填充0;
- >>>,常规右移,不管正数还是负数,都填充0;
- <<,左移,低位填充0.
由以上类型与赋值操作符结合,衍生出>>=,>>>=,<<=。
注意点:
- 都不能循环移位;
- 移位操作符只使用其右操作数的低5位作为移位长度。或者是低6位,如果其左操作数是一个long类数值。因此移位长度总是介于0到31之间;如果左操作数是long类型的,则介于0到63之间。这个长度是对32取余的,如果左操作数是long类型的,则对64取余。
public class Shifty { public static void main(String[] args) { int i = 0; while (-1 << i != 0) i++; System.out.println(i); }}例子来自于《Java谜题解惑》,代码不能打印任何信息,因为进入了无限循环。问题在于:(-1<<32)的结果为-1,因为32取余为0,相当于没有移位。
另外需要注意的是:负的移位长度通过只保留低5位而剔除其它位的方式被转换成了正的移位长度——如果左操作数是long类型的,则保留低6位。因此,如果要将一个int数值左移,其移位长度为-1,那么移位的效果是它被左移了31位。
总之,移位长度是对32取余的,或者如果左操作数是long类型的,则对64取余。因此,使用任何移位操作符和移位长度,都不可能将一个数值的所有位全部移走。
0 0
- Java基础总结——移位
- Java基础之 移位操作
- java移位运算符基础
- Java基础之 移位操作
- Java基础—总结
- java中移位运算<<,>>,>>>总结
- 大数据Java基础——移位运算的真实剖析 (一)
- JAVA基础(JAVA移位运算符)
- JAVA基础(JAVA移位运算符) .
- JAVA基础(JAVA移位运算符)
- JAVA基础(JAVA移位运算符)
- JAVA基础(JAVA移位运算符)
- JAVA基础(JAVA移位运算符)
- java基础—初学总结
- JAVA基础总结—02
- Java语言基础(移位运算符)
- 移位运算符--Java基础015
- 25.java语言基础-移位操作
- 10、 java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况
- 美美洗衣房,看着就忍不住心情好
- poj 3414 Pots BFS
- Java学习—泛型方法
- ASP.net MVC分页实例
- Java基础总结——移位
- HDOJ 4923 Room and Moor(求方差、栈)
- SQL 视图 - view
- 方式的缸发动机,公开的房间里的
- hadoop中使用MapReduce编程实例(转)
- NSMutableString的使用方法
- javascript_dom编程艺术第六章图片库实例笔记。
- 2014-08-08 一期笔记
- java动态代理