在开源中国中看到一个问题,说的是 MySQL 中做位计算:
select 00101 & 00001 as val1, 00100101 & 000100001 as val2;
为什么 val1 = 1, val2 = 99841?
见于:https://www.oschina.net/question/1273063_139555
没思考过这个问题,在 Python 中试着算一下结果一样,刚开始我也一愣,随即回想一下逻辑运算就明白了。
-> % python
Python 2.7.8 (default, Jun 18 2015, 18:54:19)
[GCC 4.9.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 00101 & 00001
1
>>> 00100101 & 000100001
32769
>>>
按位运算。
(八进制)00101 = 0100 0001
(八进制)00001 = 0000 0001
----------------------------------------------------------
0000 0001(二进制) ---> 1(十进制)
(十六进制)100,101 = 1 1000 0111 0000 0101
(十六进制)100,001 = 1 1000 0110 1010 0001
------------------------------------------------------------------------------------------
1 1000 0110 0000 0001(二进制) ---> 99,841(十进制)