package com.jingsong.test;
/**
* @author jingsong
* @date 2022/4/26 22:39
* @desc 介绍位运算符
*/
public class BitwiseTest {
public static void main(String[] args) {
/*
int的长度是4个字节,即:
00000000 00000000 00000000 00000000
*/
/*
负数的二进制 (正数的二进制 -> 取反 -> +1) ,例如:-10
1. 10 00000000 00000000 00000000 00001010
2. ! 11111111 11111111 11111111 11110101
3. +1 11111111 11111111 11111111 11110110
*/
int a = 9;// 00001001
int b = 5;// 00000101
// 1. & 两个都为1才行
System.out.println(a & b);
// 2. | 有一个1就行
System.out.println(a | b);
// 3. ^ 两个不一样就行
System.out.println(a ^ b);
// 4. ~ 记住 ~b = -(b+1) ps:就是把0和1全部交换,颠倒是非
System.out.println(~b);
// 5. << n 左移n位 (左移1位*2 、 左移2位*2*2 、 左移3位*2*2*2 ……)
System.out.println(a << 29);
// 6. >> n 同5
System.out.println(-1 >> 31);
// 7. >>> 无符号右移,最高位始终补0
System.out.println(-2 >>> 1);
/*
简单记
>> 和 << 都是相对于原来数整倍的改变,>>>的正数情况下也是
*/
}
}