1、进制转换:
int转二进制:
public static void main(String[] args) {int a = 0b100;//0b表示后面的为二进制表示,0开始表示八进制System.out.println(a);System.out.println(Integer.toBinaryString(a));System.out.println(Integer.toString(a, 2));}
代码说明:
二进制数在前面加0b
八进制数在前面加0
十进制数正常按十进制填写
十六进制数在前面加0x
二进制转int:
System.out.println(Integer.parseInt("100", 2));//结果为4
long与二进制的相互转换:
同int
2、二进制运算:
异或^:
1、0表示false,1表示true。相同则为false,不同则为true。
2、0^1=1,1^1=0。
3、作用:经常用于做电位转换。想变更某个点的电位,就将其与1做异或运算。
取反~:
public static void main(String[] args) {int a = 0b1000;//0b表示后面的为二进制表示,System.out.println(~a);//结果为-9System.out.println(Integer.toBinaryString(~a));//结果为11111111111111111111111111110111}
代码说明:
1、~表示对所有二进制位按位取反。
2、按位取反后再加1就得到了原数的相反数。
3、这里要跟反码、补码的概念区分开:
反码和补码是为了方便负数的二进制运算出现的,规定正数的反码和补码都是其本身,负数的反码是符号位不变按位取反,负数的补码是反码+1。
右移>>和无符号右移>>>:
public static void main(String[] args) {int a = -8;//0b表示后面的为二进制表示,System.out.println(a>>2);System.out.println(Integer.toBinaryString(a));System.out.println(Integer.toBinaryString(a>>2));System.out.println(Integer.toBinaryString(a>>>2));int a1 = 8;//0b表示后面的为二进制表示,System.out.println(a1>>1);System.out.println(Integer.toBinaryString(a1));System.out.println(Integer.toBinaryString(a1>>>2));
// -2
// 11111111111111111111111111111000
// 11111111111111111111111111111110
// 00111111111111111111111111111110
// 4
// 1000
// 0010}
代码说明:
右移:将一个数表示的二进制向右移n位,移出的部分将被抛弃,左侧高位补符号位。例如正数左侧补0,负数左侧补1
无符号右移:将一个数表示的二进制无符号向右移n位,移出的部分将被抛弃,无论是正数,还是负数,左侧高位都补0。