🐳1.位运算
🐬1.1按位与 &:
如果两个二进制位都是 1, 则结果为 1, 否则结果为 0
1. public class Test { 2. public static void main(String[] args) { 3. int a=10; 4. int b=1; 5. int c=a&b; 6. System.out.println(c); 7. } 8. }
🐬1.2按位或 |:
如果两个二进制位都是 0, 则结果为 0, 否则结果为 1
1. public class Test { 2. public static void main(String[] args) { 3. int a=10; 4. int b=1; 5. int c=a|b; 6. System.out.println(c); 7. } 8. 9. }
🐬1.3按位取反 ~:
如果该位为 0 则转为 1, 如果该位为 1 则转为 0
1. public class Test { 2. public static void main(String[] args) { 3. 4. int a=10; 5. a=~a; 6. System.out.println(a); 7. } 8. 9. }
🐬1.4按位异或 ^:
如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1
1. public class Test { 2. 3. public static void main(String[] args) { 4. int a=10; 5. int b=1; 6. int c=a^b; 7. System.out.println(c); 8. } 9. 10. }
🐳2.移位运算
🐬2.1 左移 <<:
最左侧位不要了, 最右侧补 0
1. public class Test { 2. 3. public static void main(String[] args) { 4. int a=10; 5. int b=a<<1; 6. System.out.println(b); 7. 8. } 9. 10. }
🐬2.2右移 >>:
最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
1. public class Test { 2. public static void main(String[] args) { 3. int a=10; 4. int b=a>>1; 5. System.out.println(b); 6. } 7. 8. 9. }
🐬2.3无符号右移 >>>:
最右侧位不要了, 最左侧补 0.
1. public class Test { 2. public static void main(String[] args) { 3. System.out.println(1>>>1); 4. System.out.println(-1>>>1); 5. } 6. 7. }