10
3
已采纳
例如,
18|52就是18和52的位与运算
18|52就是把它们都化成二进制,在按数位的从低到高进行与运算:
18=10010(二进制)
52=110100(二进制)
则18|52=
010010 (位数不够补0)
110100
--------
010000 (每一位分别进行与运算)
010000=16
18|52=16
樊澄宇在2018-01-25 13:51:52追加了内容
int a,b;
cin>>a>>b;
printf("%d&%d=%d\n",a,b,a&b);
printf("%d|%d=%d\n",a,b,a|b);
还有我有一点说错了:
a|b 是按位或运算
a&b 才是按位与运算
1
1
1
1
1
1
程序中的所有数在计算机内存中都是以二进制的形式的储存。说穿了,就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。
110
AND 1011
---------------
0010 --> 2
有人会说,计算6 and 11没有什么实际意义啊。这一系列的文章就将告诉你,位运算到底可以干什么,有些什么经典应用,以及如何用位运算优化你的程序。
贺小雨在2018-01-26 10:05:59追加了内容
printf("%d&%d=%d\n",a,b,a&b);
printf("%d|%d=%d\n",a,b,a|b);
1
1
1
0
0
0