Java 位运算的解读 & | ^ ~ << >>

Java中的位运算包括以下几种:

  按位与(&):对应位上,如果两个数都是1,则结果为1,否则为0。

1
2
3
4
int a = 3; // 二进制 0011
int b = 5; // 二进制 0101
           //    0001 = 1
System.out.println("a & b = " + (a & b));

  按位或(|):对应位上,如果两个数有一个为1,则结果为1,否则为0。

1
2
3
4
int a = 3; // 二进制 0011
int b = 5; // 二进制 0101
            //       0111 = 7
System.out.println("a | b = " + (a | b));

  按位异或(^):对应位上,如果两个数不相同,则结果为1,否则为0。

1
2
3
4
int a = 3; // 二进制 0011
int b = 5; // 二进制 0101
            //      0110 = 6
System.out.println("a ^ b = " + (a ^ b));

  按位取反(~):对每一位,将0变为1,将1变为0。

1
2
3
4
5
6
7
8
9
10
11
// ~ 的运算规则:
// ~0 = -1
// ~1 = -2
// ~2 = -3
// ~3 = -4
// 因此,~3 = 1100 = -4
int a = 3; // 二进制 0011
            //      1100 = -4
// a + ~a = -1  ,等于 1111
// 1111 + 1 = 0000 = 0
System.out.println("~a= " + (~a));

   左移(<<):将二进制数向左移动指定位数,右边用0填充。

1
2
3
4
int b = 5; // 二进制 0101
            //      1010 = 10   b << 1
            //     10100 = 20   b << 2
System.out.println("b << 2 " + (b << 1));

  右移(>>):将二进制数向右移动指定位数,左边用符号位填充。

1
2
3
4
int b = 5; // 二进制 0101
            //      0010 = 2   b >> 1
            //      0001 = 1   b >> 2
System.out.println("b >> 2 " + (b >> 2));
posted @   我太想努力了  阅读(40)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示