java中的位运算
来源:互联网 发布:tensorflow官网镜像 编辑:程序博客网 时间:2024/06/07 04:47
适当的使用位运算可以提升java程序的效率。
什么是位运算?有哪些位运算符?
~ 取反 ,| 或 ,& 与 ,<< 有符号左移,>>有符号右移,>>>无符号右移,^ 异或
数据在计算机底层是用补码进行操作的。
整数的原码,补码和反码都是它本身。
负数的原码符号位是1;反码是除符号位,其他位取反;补码是反码+1.
负数的位移运算:
右移:左边的空出的位置1;左移:
-15的 原码 :10001111 , 反码 11110000 ,补码 11110001.
也可以用四位表示就是:11111,补码是10001,右移两位是11100,原码表示是10100,就是-4.
10010100 补码 11101100 右移两位是 11111011求原码表示是 10000101. 就是-5.
左移:
-15左移2位:
补码:11110001->11000100 表示为原码是 10111100 结果是 60
-15左移4位:原码 1000 0000 0000 1111
补码:1111 1111 1111 0001->1111 1111 0001 0000 表示位原码是 1000 0000 1111 0000 结果是128+64+32+16 = 240
总结一下规律:
右移:相当于 /2 ,因此绝对值会也来越小。
负数:右移之后,高位都补1,而不是只有最高位补1;
正数:右移之后,高位置0.
左移:相当于 X2,因此数值会越来越大,应当注意溢出问题,像上面的-15左移4位,如果用8位来表示,则不能够表示正确的结果,因此应该注意左移的问题。
正数 ,负数都是如此。
>>>(无符号右移)
运算规则:
把所有的二进制数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同,相当于把符号位一起移动。 其他结构和>>相似。
0 0
- Java 中的位运算
- JAVA 中的位运算
- Java 中的位运算
- java中的位运算
- Java 中的位运算
- Java 中的位运算
- JAVA中的位运算
- Java中的位运算
- Java 中的位运算
- JAVA中的位运算
- java 中的位运算
- Java 中的位运算
- Java中的位运算
- Java中的位运算
- Java中的位运算
- Java中的位运算
- Java 中的位运算
- Java中的位运算
- JPush极光推送API工具类(JAVA)
- 群控源码
- 字符设备驱动
- 《Training:Retrieving File Information》
- 回文子序列 ssl 2662 枚举
- java中的位运算
- 二叉树的中序遍历
- AngularJS 动画
- 基于Doxygen的C/C++注释原则
- js 内存管理
- Extjs3.2第一篇:formPanel的getForm().getValues()提交与处理
- 用java做导出excel的万能方法
- spark常用的transformation
- Java安全之消息摘要