我在python中玩耍,发现了以下内容
>>>777 & 23
1
>>>777 | 23
799
Run Code Online (Sandbox Code Playgroud)
我不明白加 &/| 是什么意思 两个整数之间的运算符可以。我认为这是按位运算(https://docs.python.org/2/library/stdtypes.html#bitwise-operations-on-integer-types),但我仍然不明白按位运算
777 首先转换为位 0000001100001001
\n\n>>>'{0:016b}'.format(777)\n'0000001100001001'\nRun Code Online (Sandbox Code Playgroud)\n\n然后23转换成bit
\n\n>>> '{0:016b}'.format(23)\n'0000000000010111'\nRun Code Online (Sandbox Code Playgroud)\n\n然后将这两个位逐位进行比较(使用 & 运算符),从 777 (0) 的最左边位与 23 (0) 的最左边位开始,然后是第二个左边位,依此类推,即
\n\n0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 (777)\n& & & & & & & & & & & & & & & & &\n0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 (23)\n\xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1\nRun Code Online (Sandbox Code Playgroud)\n\n因此,其结果是:
\n\n0000000000000001 = 1\nRun Code Online (Sandbox Code Playgroud)\n\n相同,使用 or 运算符:
\n\n0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 (777)\n| | | | | | | | | | | | | | | |\n0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 (23)\n\xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93 \xe2\x86\x93\n0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1\nRun Code Online (Sandbox Code Playgroud)\n\n将其转换为 int:
\n\n>>> int('0000001100011111',2)\n799\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |