今天看到一个很有趣的老鼠试毒的问题,记录下来~~
- 位运算,举个栗子
6 and 11
6的二进制: 110
11的二进制: 1010
所以, 6 & 11 = 0010 (二进制)= 2(十进制)
- 其次,关于位掩码有一个老鼠试毒的有趣问题。我在这里看的,interesting ?
原题是问:有1000瓶水,其中有1瓶水中含有毒药——老鼠食用一点点就会在24小时之后毙命,问至少需要多少只老鼠能检测出哪一瓶水有毒。
先往小了说,假如有8瓶水,分别标号为1~8,用二进制表示分别为
二进制→十进制
0001 →1
0010 →2
0011 →3
0100 →4
0101 →5
0110 →6
0111 →7
1000 →8
将二进制的矩阵转置,并将相应水瓶中的水放入4个容器(因为8转化为二进制有4位)内:
0 0 0 0 0 0 0 1 → 容器1
0 0 0 1 1 1 1 0 → 容器2
0 1 1 0 0 1 1 0 → 容器3
1 0 1 0 1 0 1 0 → 容器4
1 2 3 4 5 6 7 8 → 水瓶编号
容器1:8号水
容器2:4、5、6、7号水
容器3:2、3、6、7号水
容器4:1、3、5、7号水
容器