位运算符 (二进制计算)
& 与 转换二进制后,两个位数都为1结果才是1 例:10000001,10000000 结果为10000000
| 或 转换二进制后,两个位数只要一个为1结果就是1 例:10000001,10000000 结果为10000001
~ 非 转换二进制后,如果位为0,结果是1,如果位为1,结果是0 例:2 结果为-3
^ 异或 两个操作数的位中,相同则结果为0,不同则结果为1 例:a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101 即13。
<< num << 1,相当于num乘以2 低位补0
>> num >> 1,相当于num除以2 高位补0
>>> 忽略符号位,空位都以0补齐
----- n=10; m=~n;
变量n的二进制数形式: 00000000 00000000 00000000 00001010
public class BinaryTest {
public static void main(String[] args) {
int a = 129, b = 128;
System.out.println("与运算符 结果:"+(a&b)); // 转换二进制后,两个位数都为1结果才是1 例:10000001,10000000 结果为10000000
System.out.println("或运算符 结果:"+(a|b)); // 转换二进制后,两个位数只要一个为1结果就是1 例:10000001,10000000 结果为10000001
System.out.println("非运算符 结果:"+(~a)); // 转换二进制后,如果位为0,结果是1,如果位为1,结果是0 例:10000001 结果为01111110
System.out.println("二进制转十进制 : "+ toBinary(a));
System.out.println("十进制转二进制 : "+ (Integer.parseInt("10000001",2))); // radix 进制
}
static String toBinary(int num){
String str = "";
while(num!=0){
str = num%2+str;
num = num/2;
}
return str;
}
}