或,与,异或,非奇淫技巧
|操作:两个二进制数字按位取或运算,只要有一个1则最后结果为1;
&运算:两个二进制数字按位取与运算,只有两个都是1则最后结果为1;
^运算:两个二进制数字按位取异或运算,两个数相同取0不相同取1;基于这样的性质可以得到一个异或的特点,那就是相同的两个数异或为0,其中一个数为0时异或的结果是原来的数。
~运算:对一个二进制数字按位取非运算,即0和1互换。
1、转换大小写
('a' | ' ') = 'a'
('A' | ' ') = 'a'
//转换成大写
('b' & '_') = 'B'
('B' & '_') = 'B'
2、大小写互换
('d' ^ ' ') = 'D'
('D' ^ ' ') = 'd'
n&(n-1)
这是非常常见的一个操作,用以消除数字 n 的二进制表示中的最后一个 1。比如,我们可以不断地做这样的操作计算数字n的二进制表示有多少个1。需要注意的是对于计算机来讲,二进制运算要快于除法运算。