Python中的位掩码介绍

Python遥感图像处理指南(4)-质量波段和位掩码之影像云层信息提取 我们接着上一章的课程,本章继续开始图像处理分析。我们的最终目标是自动监测特定兴趣区域的反射光谱。这个区域可以是农作物、森林、湖泊或任何其他目标,目标是检查该区域光谱反射率随时间的变化情况,云层和阴影等不想要的像素可能会遮挡卫星传感器的视线,导致数据中出现噪音,或者像素可能因其他干扰而存在缺陷。这就是卫星质量评估QA波段的作用所在。大多数光学卫星图像产品都带有一个或多个 QA 波段,允许用户评估每个像素的质量并提取满足其要求的像素。QA 波段最常见的应用是提取有关多云像素的信息并对其进行屏蔽。 阅读详情

位掩码简介

比特掩码几乎是每一种编程语言的通用概念;基本上,它只是一个变量,可以帮助你进行位操作,并有助于深入理解和操作一个值的位,比方说整数值。

它还有助于将数值压缩成一个更小、更有效的版本,减少内存的使用和对比特的操作。在计算机中,每一个数据或信息都被储存在较低层次的比特中。

这个比特只能处于两种状态,要么是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
BitMask位掩码 在Python中,位运算共6类,分别为按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。:将二进制数向右移动指定位数,左侧补符号位(正补0,负补1),相当于整数除法(向零取整)。:对二进制数的每一位取反,0变1,1变0(Python中会考虑符号位)。:对两个二进制数的每一位执行或操作,任一位为1结果为1。:对两个二进制数的每一位执行与操作,两位都为1结果为1。:对两个二进制数的每一位执行异或操作,两位不同结果为1。:用于切换权限状态(有则去除,无则添加)。 阅读详情

相关推荐

Python实现位掩码算法详解及源代码

位运算符包括按位与(&)、按位或(|)、按位异或(^)和按位取反(~)等。按位异或的特点是两个操作数的对应位不同才会得到1,否则得到0;首先,我们使用按位或运算符将第pos位设置为1;位掩码算法(Bitmask Algorithm)是一种高效的算法,它能够快速地处理大量的数据,通常用于计算机网络和嵌入式系统等领域。通过使用位运算符,我们可以实现位掩码算法中的各种运算,包括设置某一位为1、设置某一位为0、取反某一位等。通过使用位运算符,我们可以实现位掩码算法中的各种运算。将第2位设置为1后的数值: 14。

持续更新 622

位掩码(BitMask)——介绍与使用

今天在群里看到有人讨论小白鼠试毒药的问题,感觉很有意思,生活中处处都有技术解决问题的思想,思想的提高也会带动技术水平的提高吧,转自一位网友的帖子,仅记录学习应用,多谢。 一、前言 位运算在我们实际开发中用得很少,主要原因还是它对于我们而言不好读、不好懂、也不好计算,如果不经常实践,很容易就生疏了。但实际上,位......

数字世界 万物互联 1万+

Python数据分析:【NumPy系列】使用掩码进行数据筛选:NumPy 的隐形披风

在 NumPy 中,掩码就像是一张隐形披风,它可以帮助你在大海般的数据中快速找到你需要的珍珠。

若北辰 642

python 实现bitmask位掩码算法

位掩码(Bitmask)算法是一种在计算机科学中广泛使用的技术,主要用于通过二进制位级别的操作来处理一组标志或选项。1. 基本概念位掩码是一个二进制数,其每一位都代表一个独立的状态或属性。通过与(AND)、或(OR)、非(NOT)、异或(XOR)等位运算,可以实现对这些状态或属性的设置、清除、翻转和检查。2. 基本操作按位与(AND):& 运算符。仅当两个操作数的对应位都为1时,结果位才为1;否则结果位为0。按位或(OR):| 运算符。只要两个操作数的对应位中有一个为1,结果位就为1;否则结果位为0。

luthane的博客 1749

Bitmask位掩码算法的Python实现

在Python中,我们可以使用位运算符和逻辑操作符来实现位掩码算法。下面是一个详细的实现示例。在实际应用中,位掩码算法通常用于对某个数据结构中的标志位进行操作。每个位掩码都对应于一个特定的标志位,可以通过设置或清除位掩码来操作和查询对应的标志位。在上面的示例中,我们定义了常量BIT_0到BIT_7,它们分别表示二进制中的不同位。通过使用按位与运算符,我们可以检查位掩码中的特定位是否被设置。通过使用位掩码算法,我们可以高效地进行位操作,将多个标志位压缩到一个整数中,从而节省内存空间并提高运行效率。

2301_79366435的博客 447

python:实现bitmask位掩码算法(附完整源码)

python:实现bitmask位掩码算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 675

学习日记1:python生成自定义掩码

Deep Fill V2修复自定义掩码

liuzi_hang的博客 1344

路径规划:D*Lite寻路算法详解

D*Lite详解目录

mkr67n的博客 2万+

深入理解位掩码:从基础概念到Python应用的全面解析

位掩码(Bitmask)是一种用于操作二进制位的技巧。位掩码可以通过按位操作实现对二进制数据的高效处理,包括设置、清除、翻转特定位以及检查特定位的状态。位操作具有高效性和低内存占用的特点,是处理底层数据、优化算法性能的重要手段。位掩码是一种强大的工具,广泛应用于计算机科学的各个领域。通过本文的介绍,读者应该能够理解位掩码的基本概念和常见操作,并能够在Python中应用位掩码解决实际问题。无论是权限管理、数据压缩还是算法设计,位掩码都能提供高效的解决方案。

lph159的博客 2194

【TCAX相关】Python 官方手册下载页面(中文+英文)

Python 官方手册下载页面(中文+英文) 中文: https://docs.python.org/zh-cn/3.8/archives/ https://docs.python.org/zh-cn/3.6/archives/ 英文: https://www.python.org/doc/versions/ https://docs.python.org/3/archives/ https://www.python.org/ftp/python/doc/ ...

Seekladoom的博客 1012

从2-RSS-1U并联踝关节到双足机器人动态行走:雅可比矩阵与力矩控制实践

本文深入探讨了2-RSS-1U并联踝关节在双足机器人动态行走中的关键作用,详细解析了其设计原理、雅可比矩阵的应用及力矩控制实践。通过优化几何参数和控制算法,实现了低转动惯量、高刚度和紧凑设计,显著提升了机器人的行走稳定性和能量效率。文章还分享了从仿真到实物的跨越经验及未来优化方向。

weixin_42641998的博客 597

python10进制转2进制掩码_Python位掩码(可变长度)

为了解决一个研究问题,我们必须在python中组织位掩码搜索.作为输入,我们有一个原始数据(我们将其表示为一系列位).尺寸约为1,5Gb.作为输出,我们必须得到特定位掩码的出现次数.让我举一个例子来描述这种情况input: sequence of bits, a bitmask to search(mask length: 12bits)第一个想法(不是有效的)就是像这样使用XOR:1ste...

weixin_39996134的博客 339

OCEAN 电路仿真

介绍利用 Cadence OCEAN 进行电路脚本仿真的方法

weixin_43249158的博客 4405

python10进制转2进制掩码_在Python位掩码

I have a byte (from some other vendor) where the potential bit masks are as follows:value1 = 0x01value2 = 0x02value3 = 0x03value4 = 0x04value5 = 0x05value6 = 0x06value7 = 0x40value8 = 0x80I can count ...

weixin_39655993的博客 221

Trae的付费之路还挺艰难,茫茫多的人想付付不了(附解决办法)

不得不说,Trae国际版这个付费其实整的挺复杂的,但没办法,毕竟有政策限制,付费成功后,你就是尊贵的Pro用户啦,使用Claude 4不排队还是挺爽的,而且600次其实不算少了,有一个小技巧,简单的问题就把模型切到Gemini-2.5-flag,因为使用这个模型是没有次数限制的。其次付费的时候有个ZIP Code,这东西也是个迷之存在,有的地区节点需要填,有的不需要,如果你选到了不需要填的节点,那很好,付费就行了,如果需要填,可以填一个51800试试。

cpp加油站的专栏 5881

LeRobot — 基于 PyTorch 的真实世界机器人学习框架(一)- 核心框架模块解析

LeRobot 是一个开源的机器人学习框架,由 Hugging Face 开发,旨在降低机器人学的准入门槛。该框架提供完整的机器学习流程支持,包括数据采集、训练、评估和部署。核心模块涵盖数据集标准化、策略算法、硬件抽象和强化学习组件,采用模块化设计实现灵活扩展。通过集成 Hugging Face Hub,用户可以轻松共享数据集和预训练模型。LeRobot 特别注重真实世界的机器人应用,支持多种前沿算法如模仿学习、视觉语言动作模型等,并提供统一的硬件接口和仿真环境适配。

熊猫小妖的AI世界 171

python10进制转2进制掩码,在Python位掩码

I have a byte (from some other vendor) where the potential bit masks are as follows:value1 = 0x01value2 = 0x02value3 = 0x03value4 = 0x04value5 = 0x05value6 = 0x06value7 = 0x40value8 = 0x80I can count ...

weixin_34632164的博客 101

从 RAP OData 到可交付的 SAP Fiori 应用:部署与授权全链路实战笔记

摘要:本文探讨了RAP开发中常见的交付误区,指出开发者预览(FEAP)并非可部署应用,强调从服务发布到业务应用落地的完整链路。文章详细对比了不同部署路径(ABAP/BTP),解析权限管理关键点(SAP_BR_DEVELOPER的临时性),并提供了标准授权组合方案(IAM+业务目录+角色)。通过"发运跟踪"案例,展示了从开发验证到生产部署的全流程,特别提醒注意开发环境与生产环境的权限差异,避免"开发机正常、生产机403"的典型问题。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1402

python移位操作符(左移位操作符<<、右移位操作符>>)(允许开发者对整数进行位操作,乘2或除2)(左移操作、右移操作)(位掩码操作|=)(位运算、位操作、位移操作)

左移位操作符 (这些操作符用于对二进制数的位进行左或右移动,通常用于快速的乘法或除法运算,以及进行位级的数据操作和调整。

Dontla的博客 3034

基于Simulink的雷达跟踪系统仿真(附源码)

此示例包含对雷达系统的基本特征进行建模的子系统。该模型是用于目标位置和速度检测的雷达系统的典型模型。该示例包括雷达脉冲发生器、射频发射器子系统、移动目标的 Simulink 表示、射频接收器和接收模块(Rx 模块)。

珞瑜的博客 3516

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[LeetCode Python3] 318. Maximum Product of Word Lengths + 位掩码

318. Maximum Product of Word Lengths from collections import defaultdict class Solution: def maxProduct(self, words: List[str]) -> int: hashmap = defaultdict(int) bit_number = lambda ch: ord(ch) - ord('a') for word in words

xvrixingkong的博客 213

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

78.子集(Subsets)回溯+迭代+位掩码

78.子集(Subsets)回溯+迭代+位运算题解回溯复杂度分析PythonJava(待完成)迭代复杂度分析PythonJava(待完成)位掩码复杂度分析PythonJava(待完成) 题解 第一时间很容易想到回溯,回溯是寻找全集的很好的办法 回溯 初始化结果resresres和数组长度nnn 定义回溯函数track_back(i,tmp)track\_back(i,tmp)track_back...

朱师傅的博客 377

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LeetCode题目 90:五种算法 回溯\迭代\位掩码\字典树\动态规划实现 子集ll

这些方法在处理涉及到组合生成的问题时非常有用,例如在权限管理系统中生成角色的权限组合、在统计学中用于数据分析的各种组合情况生成等。给定一个可能包含重复元素的整数数组。,返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。

10年数据\经营分析经验,现任大厂数据分析负责人 637

Python 位运算及二进制基础知识

来补点基础知识,这篇讲的是位运算 二进制实际上就是用10进制的数的每一位数字的2的幂数 来看例子: 然后再python的操作中,只要在数字前面加上0b的字符,就可以用二进制来表示十进制数了。

bestallen的博客 2万+

python中的位移符>> << 运用

位移操作可以用于快速进行乘以或除以2的幂次的运算,这在性能要求较高的场景下尤为有用。里面关键的是if (i | j)!在洛谷入门题中有这样一道题, 使用位移符,可以大大简化代码。是一个掩码,表示 2n−1。的结果不等于 (2^n)可以理解成替换填充特定位。,就赦免,否则继续当战俘。

2301_80873659的博客 387

python win32print txt_Python Win32Print打印机状态混乱

我一直在使用Python的win32print模块来尝试获取有关打印机组的各种信息,例如驱动程序名称,作业计数,正在使用的端口,状态等.它大部分都是成功的,但是我遇到了很多麻烦充分利用win32print从API返回的状态代码.我一直在使用win32print.GetPrinter方法,该方法返回PRINTER_INFO_字典,其中一个映射是Status.但是,没有记录什么状态代码对应于什么打印机...

weixin_39908462的博客 999
上一篇: Python教程:datetime.datetime()类
下一篇: Python中跨越多个文件使用全局变量
Python热爱者
博客等级 码龄7年 3056粉丝 1330原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值