1.简介
位运算符是用来对二进制位进行操作的,包括”与(&)”、”或(|)”、”异或(^)”、”非(~)”、”左位移(<<)”、”右位移(>>)”、”无符号右移(>>>)”
2.与(&)
两个操作数的对应位都为1时,该位的结果1,其余情况都为0。
操作数 | 数值 | 数值 | 数值 | 数值 |
---|---|---|---|---|
操作数1 | 0 | 0 | 1 | 1 |
操作数2 | 0 | 1 | 0 | 1 |
与(&)运算结果 | 0 | 0 | 0 | 1 |
/**
* a&b的结果是:8
* 1010
* 1100
* 1000
*/
public static void main(String[] args) {
int a = 10;
int b = 12;
System.out.println("a&b的结果是:" + (a & b));
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.toBinaryString(a & b));
}
3.或(|)
两个操作数的对应位只要其中一个为1,该位的结果为1,其余情况都为0。
操作数 | 数值 | 数值 | 数值 | 数值 |
---|---|---|---|---|
操作数1 | 0 | 0 | 1 | 1 |
操作数2 | 0 | 1 | 0 | 1 |
或(|)运算结果 | 0 | 1 | 1 | 1 |
4.异或(^)
两个操作数的对应位如果不同,该位的结果为1,其余情况都为0。
操作数 | 数值 | 数值 | 数值 | 数值 |
---|---|---|---|---|
操作数1 | 0 | 0 | 1 | 1 |
操作数2 | 0 | 1 | 0 | 1 |
异或(^)运算结果 | 0 | 1 | 1 | 0 |
5.非(~)
将操作数位的值取反,0转换为1,1转换为0。
6.左位移(<<)
正数的二进制数的第一位为0,负数的二进制数的第一位为1。
6<<2
的结果为24
。
0000 0000 0000 0000 0000 0000 0000 0110 6的二进制数
0000 0000 0000 0000 0000 0000 0001 1000 24的二进制数
-6<<2
的结果为-24
。
1111 1111 1111 1111 1111 1111 1111 1010 -6的二进制数
1111 1111 1111 1111 1111 1111 1110 1000 -24的二进制数
在左位移时,高位舍弃,低位用0补位。在数字没有溢出的前提下,左移1位,相当于乘以2的1次方,左移n位,相当于乘以2的n次方。
7.右位移(>>)
正数的二进制数的第一位为0,负数的二进制数的第一位为1。
6>>2
的结果为1
。
0000 0000 0000 0000 0000 0000 0000 0110 6的二进制数
0000 0000 0000 0000 0000 0000 0000 0001 1的二进制数
-6>>2
的结果为-2
。
1111 1111 1111 1111 1111 1111 1111 1010 -6的二进制数
1111 1111 1111 1111 1111 1111 1111 1110 -2的二进制数
在右位移时,低位舍弃,正数高位补0,负数高位补1。在数字没有溢出的前提下,右移1位,相当于除以2的1次方,左移n位,相当于除以2的n次方,结果取商接近的最小整数。
8.无符号右移(>>>)
正数的二进制数的第一位为0,负数的二进制数的第一位为1。
6>>>2
的结果为1
。
0000 0000 0000 0000 0000 0000 0000 0110 6的二进制数
0000 0000 0000 0000 0000 0000 0000 0001 1的二进制数
-6>>>2
的结果为1073741822
。
1111 1111 1111 1111 1111 1111 1111 1010 -6的二进制数
00
11 1111 1111 1111 1111 1111 1111 1110 1073741822的二进制数
在右位移时,低位舍弃,高位补0。
最后,欢迎关注微信公众号一起交流
原文始发于微信公众号(阿喵程序园):Java位运算
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/42855.html