位是用二进制表示的,1与0,也就是有还是没有。
所以&|^其实就是数学中的取交集并集差集的问题。
所以可以用位来代替集合做这些什么什么集的运算。
&
名称:与
作用:取交集,把你有的和我有的拿出来。
举例:
0101
1001
0001
|
名称:或
作用:取并集,把你有的或我有的拿出来。
举例:
0101
1001
1101
^
名称:异或
作用:取差集,把你没有但是我有的或我没有但是你有的拿出来。
举例:
0101
1001
1100
~
名称:取反
作用:01互换,把没有变成有有变成没有。
举例:
0101
1010
位代替集合的小技巧:
取交集: c=a&b
取并集: c=a|b
取差集: c=a^b
用b剔除a中的元素(ab相同位均为1,则设置为0,否则值为a相同位的值): c=a&(~b)
a完全包含b:(a | b)==a
a不完全包含b:(a & b)!=0
a完全不包含b:(a & b) == 0