-
n & (1 << i)
这句话的意思是二进制中, 取出 \(n\) 的第 \(i + 1\) 位.
比如 \(n = 14\) , \(i = 3\) , 那么因为 \((14)_2 = (1110)_2\) ,所以结果是 \((1000)_2 = (8)_{10}\)
-
x & y
取出 \(x\) 和 \(y\) 中同一位置上都为 \(1\) 位
\(x = 43 = (101011)_2,\ y = 37 = (100101)_2\)
\(\ \ \ (101011)_2\)
\(\&(100101)_2\)
\(----\)
\(\ \ \ (100001)_2 = (33)_{10}\)
-
x & (y << 1)
取出 \(x\) 和 \(y\) 左移一位中同一位置上都为 \(1\) 位
\(x = 43 = (101011)_2,\ y = 37 = (100101)_2, \ y << 1 = (1001010)_2\)
\(\ \ \ (0101011)_2\)
\(\&(1001010)_2\)
\(----\)
\(\ \ \ (0001010)_2 = (10)_{10}\)
-
x & (y >> 1)
取出 \(x\) 和 \(y\) 右移一位中同一位置上都为 \(1\) 位
\(x = 43 = (101011)_2,\ y = 37 = (100101)_2, \ y >> 1 = (10010)_2\)
\(\ \ \ (101011)_2\)
\(\&(010010)_2\)
\(----\)
\(\ \ \ (000010)_2 = (2)_{10}\)