按位与会和参与运算的数字每一位按照二进制相与运算 1&1=0,1&0=0,0&0=0 下面找一组样例来解释 1817城堡问题 在上面的题目中给了一个数字让我们求它是由 1二进制->(1),2(10),4(100),8(1000) 哪些数字组成,如果去遍历太麻烦了,所以我们可以用&运算来解决 来看样例 11 6 11 6 3 10 6 7 9 6 13 5 15 5 1 10 12 7 13 7 5 13 11 10 8 10 12 13
看到第一个数字11,他的二进制是1011 1 0 1 1 & 1=1 1 0 1 1 & 10=10(从右往左看11&10=10) 1 0 1 1& 100=000(011&100=0) 1 0 1 1& 1000 = 1000 所以11=1+2+8 是不是节省了冗杂的代码