Java 中的左移运算
来源:互联网 发布:致富360是什么软件 编辑:程序博客网 时间:2024/05/17 03:15
我们知道 a<<b ,可以看成 a 乘以 2的b次幂
示例
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);
结果
3221225472-1073741824------2.147483648E9-2147483648-----2.147483647E92147483647
上面结果的e9,就表示乘以10的9次幂
通过上面的实例发现,在java中,运算的结果,受整数类型的限制
3<<30:
当为long时,a<<b 没有超界限 ,即二进制能表示到 64位,最高位为符号位,表值的为后63位,当最高位为1,后面全为0时,即是它的最小值:1的63次幂
当为int时,a<<b 超出了Integer的界限,即二进制只表示到32位, 最高位为符号位,表值的为后31位,当最高位为1,后面全为0时,即是它的最小值:1的31次幂
2的30次幂 在二进制中表示为 0100 0000 0000 0000 0000 0000 0000 0000
2的30次幂再乘以3,在二进制中,就是上面的再加上两次,那么加1次时最高位就会变成 1000 ....(略28个0) 再加1次变成 1100 ....(略28个0)
1100 ....(略28个0) integer只有32位,第32位同时表示符号,0表示正数,1表示负
这时表示的值是小于Integer的最小值的,需要去掉最高位表示的值,所以
余下的 100 ....(略28个0)才是值,即2的30次幂 ,符号为负 。 -1 * Math.pow(2, 30) 就等于 类型为integer时 3<<30
当a<<b (b>=32)时:
2的32次方 在二进制中,1 后面跟32个0 ,这时在integer中,,遵循上面的规律,超出32位的不算,只看到32个0,那就是0
即a<<32 就等于 a<<0 即 a 乘以2的0次幂
当比如左移33位就是先左移32位,再左移1位,所以有 a<<(b%32), 当b>=32时
- Java 中的左移运算
- Java左移运算
- java中的左移、右移移位运算符:<<,>>,>>>
- c++中的左移、右移运算
- c++中的左移、右移运算
- c++中的左移、右移运算
- c++中的左移、右移运算
- c++中的左移、右移运算
- c++中的左移、右移运算
- c++中的左移、右移运算
- 左移运算符
- java << 左移 >>右移运算终于明白一点了
- java位运算(左移、右移)
- java高级之java的左移运算符和右移运算符
- 左移,又移运算
- 位运算(左移)
- C++中的整数的左移和右移运算符
- 位运算中的左移和右移的计算详解
- 当你真正感觉到痛,你才知道痛是什么——ACM退役贴
- 判断两个有序数组中是否存在相同的数字
- 关键帧动画CAKeyframeAnimation-1
- HDOJ 2084 数塔
- 样式和主题&自定义样式和主题
- Java 中的左移运算
- 在MFC项目中使用Google Earth COM API示例
- EL和OGNL用处
- 采畅云服务——销售易
- 新增磁盘不重启识别
- navigationBar添加背景图片
- 自定义tabhost实现tab切换动画
- 【AC大牛陈鸿的ACM总结贴】【ID AekdyCoin】人家当初也一样是菜鸟
- 每日练手 8.19