定义二进制

二进制用0b开头

1
int i = 0b11;

二进制转换

1
2
3
4
5
6
//二进制字符串
String b = Integer.toBinaryString(3);
//同理
String b = Integer.toString(3,2);
//二进制字符串转int
int i = Integer.parseInt(b, 2);

移位

int

1
2
3
4
5
6
7
int i1 = 0b11, i2 = 0b10;
System.out.println(Integer.toBinaryString(i1 << 1));
System.out.println(Integer.toBinaryString(i1 >> 1));
System.out.println(Integer.toBinaryString(i1 & i2));
System.out.println(Integer.toBinaryString(~i1));
System.out.println(Integer.toBinaryString(i1 | i2));
System.out.println(Integer.toBinaryString(i1 ^ i2));

BigInteger

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//11    00
BigInteger bi1 = new BigInteger("3"),bi2 = new BigInteger("0");
//左移
System.out.println(bi1.shiftLeft(1).toString(2));
//右移
System.out.println(bi1.shiftRight(1).toString(2));
//与
System.out.println(bi1.and(bi2).toString(2));
//非
System.out.println(bi1.not().toString(2));
//或
System.out.println(bi1.or(bi2).toString(2));
//异或
System.out.println(bi1.xor(bi2).toString(2));

除基倒取余法

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void binaryToDecimal(int n) {
int t = 0; // 用来记录位数
int bin = 0; // 用来记录最后的二进制数
int r = 0; // 用来存储余数

while (n != 0) {
r = n % 2;
n = n / 2;
bin += r * Math.pow(10, t);
t++;
}
System.out.println(bin + "\n");
}