a & b = a,b各二进制补码,各位求与运算,各位均为1,结果为1,否则为0。
a | b = a,b 各二进制补码,各位求或运算,各位有一个为1,结果为1,否则为0。
0001 = 1,
0010 = 2
0100 = 4
1000 = 8
4个状态位,与后,值不改变的话,该状态位为真。为0的话,表示该状态位为假。
int a=1,b=2,c=4,d=8;
int test = 10;//1010
printf("%d,%d,%d,%d",a&test,b&test,c&test,d&test);out:0,2,0,8//第一位,跟第三位为假。
//如果改变状态位为真,该状态位与test值取或值 printf("%d",a|test);<pre name="code" class="cpp"> out:11//改变第一位值为真 //再来看与值 test = 11;//1011<pre name="code" class="cpp"> printf("%d,%d,%d,%d",a&test,b&test,c&test,d&test);cout:1,2,0,8//只剩第三位值为假

1万+

被折叠的 条评论
为什么被折叠?



