Python中的位掩码介绍
本教程介绍了Python中的位掩码,并演示了我们如何用位操作符进行位掩码,例如:AND
,OR
,NOT
,等等。
Python中的位掩码简介
比特掩码几乎是每一种编程语言的通用概念;基本上,它只是一个变量,可以帮助你进行位操作,并有助于深入理解和操作一个值的位,比方说整数值。
它还有助于将数值压缩成一个更小、更有效的版本,减少内存的使用和对比特的操作。在计算机中,每一个数据或信息都被储存在较低层次的比特中。
这个比特只能处于两种状态,要么是0
(False
),要么是1
(True
),特定的组合有特定的意义。
让我们看一个例子来理解Python中的bitmask概念。
# convert 8 into binary format --> 1000
bindata = format(8, "b")
print(bindata)
输出:
1000
在上面的例子中,我们已经把8
,一个十进制的整数,转换成二进制的形式,相当于1000
。现在,我们可以与8
进行更深入的交互,并操作它的每一个位。
这就是位掩码的概念出现的地方。但是,首先,让我们看一个例子,看看我们如何与二进制位互动。
示例代码:
bin_a = int(format(8, "b")) # 1000
bin_b = int(format(1, "b")) # 0001 or 1
# 1000 (8)
# 0001 (1) OR (|) Bitwise Operator
# -----
# 1001 (9)
print(f"bin_ a = {bin_a}")
print(f"bin_ b = {bin_b}")
print(f"The OR (SUM) of bin_a and bin_b = {(bin_a | bin_b)}")
输出:
bin_ a = 1000
bin_ b = 1
The OR (SUM) of bin_a and bin_b = 1001
在上面的代码栅栏中,我们使用了位操作符OR
,表示为|
,它被用来逐位添加二进制值。
Python中的位操作符
位操作符对任何积分类型进行逐位操作short
,byte
,long
,char
,int
,等等。有不同的位运算符,每个运算符都有一个特定的使用情况。
- 位数OR
|
- 位数和
&
- 位数XOR
- 位数补码
~
位数OR|
OR
true
运算符是一个位运算符,表示为 ,它对两个或更多的值进行逐位操作,当至少有一个值是 ,否则返回 。|
true
false
以下是两个值的OR (|)
的基本结构:
|A
|B
|A | B
|
| ——— | ——— | ——— |
| 1 (真) | 1 (真) | 1 (真)
| 0 (False) | 0 (False) | 0 (False) | 0 (False)
| 1 (真) | 0 (假) | 1 (真) | 0 (假)
| 0 (False) | 1 (True) | 1 (True) |
示例代码:
### Bitwise operator OR (|)
a = int(format(5, "b")) # 101
b = int(format(4, "b")) # 100
# 101 (5)
# 100 (4) OR (|) Bitwise Operator
# ------
# 101 (5)
print(f"a = {a}nb = {b}")
print("a & b = ", (a | b)) # 101
输出:
a = 101
b = 100
a & b = 101
位数和&
AND
运算符是一个位运算符,表示为&
,它对两个或多个值进行逐位计算,如果两个值都是true
,则返回true
;否则,返回false
。
AND
(&
)的基本结构为两个值:
A |
B |
A & B |
---|---|---|
1 (真) | 1 (True) | 1 (真) |
0 (False) | 0 (假) | 0 (假) |
1 (真) | 0 (假) | 1 (假) |
0 (假) | 1 (真) | 0 (假) |
示例代码:
# Bitwise operator AND (&)
a = int(format(5, "b")) # 101
b = int(format(4, "b")) # 100
# 101 (5)
# 100 (4) AND (&) Bitwise Operator
# -----
# 100 (4)
print(f"a = {a}nb = {b}")
print("a & b = ", (a & b)) # 100
输出:
a = 101
b = 100
a & b = 100
位数XOR
它是一个二进制运算符,用 ,表示,当给定的两个值相同时,它返回false
,或者true
,或者false
;否则,它将返回true
。
XOR
算子的基本结构如下:
A |
B |
A ^ B |
---|---|---|
1 (真) | 1 (真) | 0 (假) |
0 (假) | 0 (假) | 0 (假) |
1 (真) | 0 (假) | 1 (真) |
0 (假) | 1 (真) | 1 (真) |
示例代码:
# Bitwise operator XOR (^)
a = int(format(7, "b")) # 101
b = int(format(4, "b")) # 100
# 111 (7)
# 100 (4) XOR (^) Bitwise Operator
# ------
# 011 (3)
print(f"a = {a}nb = {b}")
print("a ^ b = ", (a b)) # 011 or 11
输出:
a = 111
b = 100
a ^ b = 11
位数补码~
位数补码 (~
) 是一个单数运算符,被称为NOT
运算符。NOT
运算符将一个值的比特模式倒置。
NOT
运算符的基本结构是:
A |
~A |
---|---|
1 (真) | 0 (假) |
0 (假) | 1 (真) |
让我们看看下面的例子,学习一下NOT
(~)的概念。
# Bitwise operator NOT (~)
a = int(format(0, "b"))
print(f"a = {a}")
print(f"The Complement of a = {~a}")
输出:
a = 0
The Complement of a = -1