从计组当中有了一些想法,理解了逻辑运算实际上是以二进制补码为载体的
应用二进制的思想理解,数值在内存中以二进制补码的形式存在。
正数的补码为原码,负数的补码为:符号位不变,原码取反加一。
&(按位与)——全1为1,否则为0
|(按位或)——有1为1,否则为0
^(按位异或)——相同为0,不同为1
注意a实际上未改变
#include<stdio.h>
int main()
{ int a = 10;
int b = a << 2;
printf("a = %d\nb = %d\n", a, b);
// 00000000000000000000000000001010--a在内存中的二进制
// (00)00000000000000000000000000101000--a左移一位产生的结果,
//左移出去的0抛弃
int c=1,d=2;
printf("%d %d",c&d,c|d);
//00000001
//00000010
//00000000 a&b =0
//00000011 a|b =3
}