(1)与(&) 规律:两个操作数中位都为1,结果才为1,否则结果为0
int a =10;
int b =11;
System.out.println("a 和b 与的结果是:"+(a&b))
运行结果---> 10
分析: 10 转换成二进制就是 1010
11 转换成二进制就是 1011
计算结果为 1010 ---》10
(2)非(~)规律:如果位为0,结果是1,如果位为1,结果是0
int a =10;
System.out.println("a 和b 与的结果是:"+(~a))
运行结果---> 5
分析: 10 转换成二进制就是 1010
计算结果为 101 ->5
(3)或(|)规律:两个位只要有一个为1,那么结果就是1,否则就为0
int a =10;
int b =11;
System.out.println("a 和b 与的结果是:"+(a|b))
运行结果---> 11
分析: 10 转换成二进制就是 1010
11 转换成二进制就是 1011
计算结果为 1011 ---》11
(4)异或(^)两个操作数的位中,相同则结果为0,不同则结果为1
int a =10;
int b =11;
System.out.println("a 和b 与的结果是:"+(a&b))
运行结果---> 1
分析: 10 转换成二进制就是 1010
11 转换成二进制就是 1011
计算结果为 0001 ---》1
二进制转换十进制快速的方式:
记以下排列,其实很Easy了,从右往 左,依次是前一个数的2倍:
256 128 64 32 16 8 4 2 1
随便写个数字比如48
48 = 32 + 16,所以在32 和 16所在的位置为1,其余为0,
转为2进制就是
256 128 64 32 16 8 4 2 1
0 0 0 1 1 0 0 0 0
二进制转十进制就更简单了,
比如随便写的一串 01111101
先写上 : 0 1 1 1 1 1 0 1
然后填充 128 64 32 16 8 4 2 1
十进制为 64+32+16+8+4+1=125