3 << 2; //3*2^2 = 3*4 = 12; //<< 把<<左边的数据乘以2的移动次幂
计算出3的二进制:11
00000000 00000000 00000000 00000011
(00)000000 00000000 00000000 0000001100 //2**2*2+2*2
③>>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1
-24 >> 2
计算出-24的二进制:11000
原码:10000000 00000000 00000000 00011000
反码:11111111 11111111 11111111 11100111
补码:11111111 11111111 11111111 11101000
11111111 11111111 11111111 11101000
1111111111 11111111 11111111 111010右移之后的补码 最高为是1,左边补齐1
补码:1111111111 11111111 11111111 111010
反码:1111111111 11111111 11111111 111001
原码:1000000000 00000000 00000000 000110
结果:-6
-24 >>> 2
计算出24的二进制:11000
0011111111 11111111 11111111 111010
结果:
&[有0则0]
int a = 3;
int b = 4;
3的二进制:11
4的二进制:100
00000000 00000000 00000000 00000100
&位与运算:有0则0。
&00000000 00000000 00000000 00000100
-----------------------------------
00000000 00000000 00000000 00000000
结果是:0
⑥|[有1则1]
|位或运算:有1则1。
|00000000 00000000 00000000 00000100
00000000 00000000 00000000 00000111
结果是:7
⑦^[相同则0,不同则1]
^位异或运算:相同则0,不同则1。
int a = 10;
int b = 20;
System.out.println(a ^ b ^ b); //10
System.out.println(a ^ b ^ a); //20
⑨~[:0变1,1变0]
~按位取反运算符:0变1,1变0
~11111111 11111111 11111111 11111100 (补码)
补码:11111111 11111111 11111111 11111100
反码:11111111 11111111 11111111 11111011
原码:10000000 00000000 00000000 00000100
结果是:-4
第二章:08运算符[位运算符]
原文:https://www.cnblogs.com/Lucky-stars/p/11007656.html