位掩码简介
比特掩码几乎是每一种编程语言的通用概念;基本上,它只是一个变量,可以帮助你进行位操作,并有助于深入理解和操作一个值的位,比方说整数值。
它还有助于将数值压缩成一个更小、更有效的版本,减少内存的使用和对比特的操作。在计算机中,每一个数据或信息都被储存在较低层次的比特中。
这个比特只能处于两种状态,要么是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 ,表示为| ,它被用来逐位添加二进制值。
位操作符
位操作符对任何积分类型进行逐位操作short,byte,long,char,int ,等等。有不同的位运算符,每个运算符都有一个特定的使用情况。
- 位数OR|
- 位数和&
- 位数XOR
- 位数补码~
1.位数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
2.位数和&
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
3.位数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
4.位数补码~
位数补码 (~) 是一个单数运算符,被称为NOT 运算符。NOT 运算符将一个值的比特模式倒置。
NOT 运算符的基本结构是:
A ~A
1 (真) 0 (假)
0 (假) 1 (真)
让我们看看下面的例子,学习一下NOT (~)的概念。
# Bitwise operator NOT (~)
#Python小白学习交流群:711312441
a = int(format(0, "b"))
print(f"a = {a}")
print(f"The Complement of a = {~a}")
输出:
a = 0
The Complement of a = -1