Java 中的位移运算
2014-12-02 11:27
351 查看
位移运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
计算规则如下:
①左移n位相当于乘以2的n次方。
②右移n位相当于除以2的n次方。这里是取商哈,余数就不要了。
③ >>>(无符号右移)
运算规则:
按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。 其他结构和>>相似。
示例
[java] view
plaincopyprint?
long a = 0x3;
long b = 30;
long longLeft = a << b;
System.out.println(longLeft);
System.out.println(0x3 << 30);
System.out.println("-----");
System.out.println(Math.pow(-2, 31));
System.out.println(Integer.MIN_VALUE);
System.out.println("-----");
System.out.println(Math.pow(2, 31) - 1);
System.out.println(Integer.MAX_VALUE);
结果
[plain] view
plaincopyprint?
3221225472
-1073741824
-----
-2.147483648E9
-2147483648
-----
2.147483647E9
2147483647
计算规则如下:
①左移n位相当于乘以2的n次方。
②右移n位相当于除以2的n次方。这里是取商哈,余数就不要了。
③ >>>(无符号右移)
运算规则:
按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。 其他结构和>>相似。
示例
[java] view
plaincopyprint?
long a = 0x3;
long b = 30;
long longLeft = a << b;
System.out.println(longLeft);
System.out.println(0x3 << 30);
System.out.println("-----");
System.out.println(Math.pow(-2, 31));
System.out.println(Integer.MIN_VALUE);
System.out.println("-----");
System.out.println(Math.pow(2, 31) - 1);
System.out.println(Integer.MAX_VALUE);
结果
[plain] view
plaincopyprint?
3221225472
-1073741824
-----
-2.147483648E9
-2147483648
-----
2.147483647E9
2147483647
相关文章推荐
- java 中的一些位移运算。
- JAVA的位移运算巧方法
- Java中的位移运算与位运算魔法
- java java.lang.Long详解之三 大显神通的位移运算
- java 位移运算
- java对位移运算越界的优化
- Java的位移运算
- java java.lang.Long详解之三 大显神通的位移运算(转)
- java之位移运算
- java 位移运算
- 黑马程序员—Java的位移运算另一种方法
- Java的位移运算巧方法
- java关于位移运算的面试题
- Java 位移运算
- JAVA的位移运算巧方法
- java java.lang.Long详解之三 大显神通的位移运算
- Java的位移运算巧方法
- java位移运算导致数值为负数
- java位移运算
- java位移运算