概述
- 参考来源:Matrix67
基本位运算
运算符 | 说明 | 演示 |
---|---|---|
<< | 左移 n n n位相当于 × 2 n times 2^n ×2n | 5 << 3 == 5 * np.power(2, 3) |
>> | 右移 n n n位相当于 × 1 2 n times frac{1}{2^n} ×2n1 | 128 >> 3 == 128 / np.power(2, 3) |
& | and:同真为真,否则为假 | 5 & 9 == 1 |
| | or:一真即真 | 5 | 9 == 13 |
^ | xor:同假异真 | 5 ^ 9 == 12 |
~ | no | ~5 == -6 |
技巧应用
- Matrix67基础
- 判断奇偶性
x & 1
- 去掉最后一位(二进制少一位)
x >> 1
- 在最后加一个0
x << 1
- 在最后加一个1
(x << 1) + 1
- 把最后一位变成1
x | 1
- 把最后一位变成0
(x | 1) - 1
- 最后一位取反
x ^ 1
- 把右数第k位(从1开始)变成1
x | (1 << (k - 1))
- 把右数第k位变成0
x & ~ (1 << (k - 1))
- 右数第k位取反
x ^ (1 << (k - 1))
- 取末k位
x & ((1 << k) - 1)
- 取右数第k位
x >> (k - 1) & 1
- 把末k位变成1
x | (1 << k - 1) <==> x | (1 << (k - 1))
- 末k位取反
x ^ (1 << k - 1)
- 把右边连续的1变成0
x & (x + 1)
- 把右起第一个0变成1
x | (x + 1)
- 把右边连续的0变成1
x | (x - 1)
- 取右边连续的1
x ^ (x - 1)
- 去掉右起第一个1的左边
x & (x ^ (x - 1))
- 判断奇偶性
- Matrix67进阶篇(1)
- Matrix67进阶篇(2)
- Matrix67实战篇
- 二进制枚举子集:从5个求中抽取任意0-5个求,枚举全部的情况:
- 组合 combinations
- 二进制表示: 0 = 00000 0 =00000 0=00000表示全部未抽中, 31 = 11111 = 2 5 − 1 31 =11111 = 2^5 - 1 31=11111=25−1表示全部抽中,则全部情况为 [ 0 , 31 ] [0, 31] [0,31]
- 技巧
- 找出数组中没有重复的数字:相同的数字 异或xor运算后为 0 0 0
from functools import reduce reduce(lambda x, y: x^y, t)
最后
以上就是标致大山为你收集整理的[集锦]Python位运算的全部内容,希望文章能够帮你解决[集锦]Python位运算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复