Python 中的位掩码简介
本篇文章介绍了 Python 中的位掩码,并演示了如何使用按位运算符(例如 AND、OR、NOT 等)执行位掩码。
Python 中的位掩码简介
位掩码是几乎所有编程语言的通用概念; 基本上,它只是一个变量,可以帮助您进行按位运算,并有助于深入理解和操作值的位,比如说整数值。
它还有助于将值压缩为更小、更高效的版本,从而减少内存使用和位操作。 在计算机中,每条数据或信息都以较低级别的位存储。
该位只能处于两种状态,0(假)或 1(真),特定的组合具有特定的含义。
让我们看一个例子来理解 Python 中的位掩码概念。
# 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 运算符是一种按位运算符,表示为 |,它对两个或多个值进行逐位操作,并在至少一个值为 true 或 false 时返回 true。
以下是两个值的 OR (|
) 的基本结构:
A | B | A | B |
---|---|---|
1 (True) | 1 (True) | 1 (True) |
0 (False) | 0 (False) | 0 (False) |
1 (True) | 0 (False) | 1 (True) |
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; 否则为假。
这是两个值的 AND (&) 的基本结构:
A | B | A & B |
---|---|---|
1 (True) | 1 (True) | 1 (True) |
0 (False) | 0 (False) | 0 (False) |
1 (True) | 0 (False) | 1 (False) |
0 (False) | 1 (True) | 0 (False) |
示例代码
# 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
它是一个二元运算符,用^表示,当给定的两个值相同时,无论是true还是false,它都返回false; 否则,它将返回true。
XOR运算符的基本结构如下:
A | B | A ^ B |
---|---|---|
1 (True) | 1 (True) | 0 (False) |
0 (False) | 0 (False) | 0 (False) |
1 (True) | 0 (False) | 1 (True) |
0 (False) | 1 (True) | 1 (True) |
示例代码
# 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 (True) | 0 (False) |
0 (False) | 1 (True) |
让我们通过下面的例子来了解 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
相关文章
在 Ubuntu 中卸载 Python
发布时间:2023/06/27 浏览次数:157 分类:Python
-
本文演示如何从 Ubuntu 中删除或卸载 Python。检查你的系统中是否安装了Python 使用 Ctrl+Alt+T 打开终端。打开终端后,使用命令 python3 --version 检查您的系统是否安装了 python。
Python Teradata 连接
发布时间:2023/06/27 浏览次数:86 分类:Python
-
本文将讨论一些基本的正确准则,并在讨论连接方式之前了解 Teradata 模块的工作原理。Python 中的 Teradata 数据库 您可以使用 Python 和 Teradata 模块编写与 Teradata 数据库的强大交互脚本。
在 Python 中查找素因数
发布时间:2023/06/27 浏览次数:175 分类:Python
-
本篇文章将介绍如何在 Python 中执行素因数分解。质因数分解概述 在数学中,数字的因子是那些可以除以给定数字且余数为零的数字。
在 Python 中从 URL 中提取域
发布时间:2023/06/27 浏览次数:86 分类:Python
-
本文将通过实际例子来讲解Python的 urlparse() 函数从URL中解析并提取域名。 我们还将讨论提高解析 URL 和使用其不同组件的能力。使用 urlparse() 从 URL 中提取域
Python 中的省略号对象
发布时间:2023/06/27 浏览次数:158 分类:Python
-
本篇文章将介绍 Python 中省略号对象的使用。使用省略号作为未编写代码的占位符 省略号对象可以以不同的方式使用。 它主要充当未编写代码的占位符。
实现 Python Builder 模式的不同方法
发布时间:2023/06/27 浏览次数:70 分类:Python
-
构建器模式是一种允许对象的创建与其表示分离的模式。 这种模式可以创建和配置复杂的对象而无需继承,这是一种强大但不灵活的方法。
Python 中的互相关
发布时间:2023/06/27 浏览次数:81 分类:Python
-
互相关是一种重要的信号处理方法,用于分析具有不同滞后的两个信号之间的相似性。 您不仅可以了解两个信号的匹配程度,还可以获得它们最相似的时间点或索引。本文将讨论在 Python 中处理
使用 Python Timedelta 月份计算日期
发布时间:2023/06/27 浏览次数:128 分类:Python
-
在本篇文章中,我们将通过 timedelta 学习如何在 Python 中使用日期时间。 我们将了解如何计算当前日期或任何其他日期六个月后的日期。
Python MRO(方法解析顺序)
发布时间:2023/06/27 浏览次数:182 分类:Python
-
多重继承意味着单个子类可以继承多个类,并且子类将被授权访问属性和函数,除非它们不是该特定类的私有属性和函数。 MRO 技术用于搜索正在执行的类的顺序。在这篇文章中,我们将学习