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 ,表示为| ,它被用来逐位添加二进制值。

位操作符

位操作符对任何积分类型进行逐位操作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

猜你喜欢

转载自blog.csdn.net/qdPython/article/details/131982661