python按位翻转_Python成为专业人士笔记-位操作符

“专业人士笔记”系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com

按位操作符直接操作二进制的字符串,这些是最基本的操作,并直接由中央处理器所支持。

在处理设备驱动程序、图形底层、加密和网络通信时,这些位操作是必需的。本文提供一些有用的知识和对应Python的按位运算符示例

Bitwise NOT 位操作:否

〜运算符将翻转数字中的所有位, 由于计算机使用带符号的数字表示形式占大多数,所以值得注意的是,二进制补码符号用于在写入负数的情况下对负二进制数进行前导(1) 编码 而不是前导零(0)。

这意味着,如果您使用8位来表示您的二进制补码,则将处理 从0000 0000到0111 1111代表从0到127的数字并保留1xxx xxxx来代表负数

八位两位补码的数:

#位无符号值二进制补码值

0000 0000 0 0

0000 0001 1 1

0000 0010 2 2

0111 1110 126 126

0111 1111 127 127

1000 0000 128 -128

1000 0001 129 -127

1000 0010 130 -126

1111 1110 254 -2

1111 1111 255 -1

从本质上讲,这意味着1010 0110的无符号值为166(通过加(128 * 1)+(64 * 0)+(32 * 1)+(16 * 0)+(8 * 0)+(4 * 1)+(2 * 1)+(1 * 0)),它具有一个二进制补码值 -90(通过添加(128 * 1)-(64 * 0)-(32 * 1)-(16 * 0)(8 * 0)-(4 * 1)-(2 * 1)-(1 * 0),以及对值的补码)。

这样,负数的范围可以降至-128(1000 0000)。 Zero(0)表示为0000 0000,负号表示一(-1)为1111 1111,

这等同于〜n = -n-1:

# 0 = 0b0000 0000

~0

#输出: -1

#-1 = 0b1111 1111

# 1 = 0b0000 0001

~1

Out: -2

-2 = 1111 1110

2 = 0b0000 0010

~2

#输出: -3

#因为-3 = 0b1111 1101

#123 = 0b0111 1011

~123

#输出: -124

#因为 -124 = 0b1000 0100

注意,此操作应用于正数时的总体效果可以总结为:

~n -> -|n+1|

然后,当应用于负数时,相应的效果是:

~-n -> |n-1|

以下示例说明了最后一条规则:

#-0 = 0b0000 0000

~-0

#输出 -1

#-1 = 0b1111 1111

# 0是这个规则的例外,因为-0总是== 0

#-1 = 0b1000 0001

~-1

#输出: 0

#0 = 0b0000 0000

#-2 = 0b1111 1110

~-2

#输出: 1

#1 = 0b0000 0001

# -123 = 0b1111 1011

~-123

#输出: 122

#122 = 0b0111 1010

Bitwise AND 位操作:与

&操作符将执行二进制“与”操作,如果在两个操作数中都存在位,则复制该位。比如:

# 0 & 0 = 0

# 0 & 1 = 0

# 1 & 0 = 0

# 1 & 1 = 1

# 60 = 0b111100

# 30 = 0b011110

60 & 30

#输出: 28

#28 = 0b11100

bin(60 & 30)

#输出: 0b11100

Bitwise OR 位操作:或

‘|’操作符将执行一个二进制“or”,如果它存在于任何一个操作数中,那么就会复制一个位,比如:

# 0 | 0 = 0

# 0 | 1 = 1

# 1 | 0 = 1

# 1 | 1 = 1

#60 = 0b111100

#30 = 0b011110

60 | 30

#输出: 62

#62 = 0b111110

bin(60 | 30)

#输出: 0b111110

Bitwise Left Shift 位操作: 向左位移

‘<

#2 = 0b10

2 << 2

#输出: 8

#8 = 0b1000

bin(2 << 2)

#输出: 0b1000

执行1的左位移位相当于乘以2

7 << 1

#输出: 14

执行n的左位移位相当于乘以2**n :

3 << 4

#输出: 48

Bitwise Right Shift 位操作: 向右位移

‘>>’ 操作符将执行按位“右移”,即左操作数的值按右操作数提供的位数右移:

# 8 = 0b1000

8 >> 2

#输出: 2

# 2 = 0b10

bin(8 >> 2)

#输出: 0b10

执行1的右位移位等于2的整数除法 :

36 >> 1

#输出: 18

15 >> 1

#输出: 7

执行n的右位移位等于2**n的整数除法 :

48 >> 4

#输出: 3

59 >> 3

#输出: 7

重赋值操作

所有的位操作符(除了 ‘~’ ),都有固定的用法:

a = 0b001

a &= 0b010

#输出 a = 0b000

a = 0b001

a |= 0b010

#输出 a = 0b011

a = 0b001

a <<= 2

#输出 a = 0b100

a = 0b100

a >>= 2

#输出 a = 0b001

a = 0b101

a ^= 0b011

#输出 a = 0b110

禁止转载,违者必究!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我看三国有感而发

三国到现在已经过去一千多年了&#xff0c;关羽先生应该还淹没在失去荆州的痛苦中&#xff0c;关羽先生出现的时候充满了一股傲气&#xff0c;这种站着向上仰望30度角的男人非常稀有&#xff0c;应该是几百年才出现一个&#xff0c;而且还要生于乱世&#xff0c;可惜啊可惜&…

pil库修改图片大小_Gvcode库:一个更简单的、华人开源的、自动生成验证码的python库...

1 说明&#xff1a;1.1 gvcode全称&#xff1a;graphic-verification-code。1.2 基本介绍&#xff0c;一秒搞懂。1.3 并对源码进行修改一个小bug&#xff0c;教您如何修改源码&#xff0c;解决bug。2 准备&#xff1a;2.1 官网&#xff1a;https://pypi.org/project/graphic-ve…

iOS获取某个日期后n个月的日期

一、给一个时间&#xff0c;给一个数&#xff0c;正数是以后n个月&#xff0c;负数是前n个月&#xff1b;1 -(NSDate *)getPriousorLaterDateFromDate:(NSDate *)date withMonth:(NSInteger)month2 3 {4 5 NSDateComponents *comps [[NSDateComponents alloc] init];6 …

Android-AB系统OTA升级介绍

什么是OTA升级&#xff1f;OTA是Over-the-Air的简称&#xff0c;OTA升级可以理解为用户正常使用过程中进行升级&#xff0c;OTA 升级旨在升级基础操作系统、系统分区上安装的只读应用和/或时区规则。什么是Android AB系统更新A/B 系统升级&#xff0c;也叫做无缝更新&#xff0…

python输出进度条 tqdm_python-tqdm进度条

Tqdm 进度条可视化模块2018-12-04 14:34:25 使用python Tqdm进度条库让你的python进度可视化 Tqdm在阿拉伯语表示进步,在西班牙语中表示我非常爱你.是一个快速,可扩展的Python进度条, ...Python字符进度条Python字符进度条 看看这个神奇的module from tqdm import trange from …

看完少年的你,想到少年的我

别人喜欢听故事&#xff0c;所以我就讲故事&#xff0c;我可以不是现在的我&#xff0c;但是我还是原来的我&#xff0c;我从一个很小的地方来&#xff0c;我小时候&#xff0c;家里赚钱很难&#xff0c;读书是一件很苦的事情&#xff0c;但是呢&#xff0c;读书又是一件非常光…

伤感网络验证系统_知网查重报告单能造假?验证报告单真伪时,知网只给了这一个办法...

这是论文屋推送的第5篇文章&#xff0c;论文代发寻渠道&#xff0c;就到论文屋。现在的修图功能太强大了有木有&#xff1f;除了专业的一点的AdobePhotoshop之外&#xff0c;任何的一款修图软件甚至手机软件都可以更改一张图的任何地方&#xff0c;最重要的是&#xff0c;技术高…

jQuery: 整理3---操作元素的内容

1.html("内容") ->设置元素的内容&#xff0c;包含html标签&#xff08;非表单元素&#xff09; <div id"html1"></div><div id"html2"></div>$("#html1").html("<h2>上海</h2>") …

安卓系统监听system property值?

预备知识-什么是system propertysystem property是系统属性&#xff0c;以key-value格式保存。可以通过以下方式读取和修改system property的值&#xff1a;1.adbadb shell getprop <key> adb shell setprop <key> <value>2.C/Cint property_get(const char…

为什么全天坐在电脑前会让你精疲力竭

Tips 原文作者&#xff1a;Katie Heaney 原文地址&#xff1a;Why Sitting at Your Computer All Day Can Wipe You Out 像大多数日子一样&#xff0c;我昨天大部分时间坐在我认为是公寓最美丽的一角&#xff0c;一直在笔记本电脑打字。 我提交了一个故事&#xff0c;转述了几个…

这届全明星,把NBA又燃回来了

第一个罚球&#xff0c;戴维斯出手后&#xff0c;听到哐当医生&#xff0c;皮球掉了出来。我又紧张了。微信群了很多人开始发消息&#xff0c;说詹姆斯队又要输了。回到比赛。戴维斯当时没有任何微笑&#xff0c;我估计他内心也是紧张的&#xff0c;他有点埋怨哈登&#xff0c;…

PYTHON__ ITERTOOLS模块

组成 总体&#xff0c;整体了解 无限迭代器 迭代器 参数 结果 例子 count() start, [step] start, startstep, start2*step, ... count(10) --> 10 11 12 13 14 ... cycle() p …

redis分布式锁java代码_基于redis实现分布式锁

“ 在上一篇文章中介绍了动态配置定时任务&#xff0c;其中的原理跟spring 定时任务注解Scheduled一样的&#xff0c;都是通过线程池和定义执行时间来控制。来思考一个问题&#xff0c;如果我们的定时任务在分布式微服务里面呢&#xff1f;在分布式微服务里面一个微服务肯定可以…

数值字符串

加粗样式 数值与字符串 受限于电脑内存 数字 int float 布尔 none 列表list:l[1,2,3] l[1]2 字典表dict:d{‘name’;‘tom’,‘age’:20} d.get(‘name’) d[‘name’] 元组t(1,2,3,4) 元组与列表区别&#xff1a;列表可以改变相应下标数据&#xff0c;元组不行。 数值&#x…

C语言写个贪吃蛇游戏

贪吃蛇是个非常经典的游戏&#xff0c;用C语言来实现也是一个好玩的事情。这个游戏我写完后放在知乎&#xff0c;竟然点赞的人数超级多。我觉得大家喜欢&#xff0c;一个方面是因为写得简单&#xff0c;大家都能看得懂&#xff0c;一个可扩展性还是非常强的。我试了说一下这个代…

seir模型matlab_疫情专题 | 传染病的经典数学模型

在此次新冠肺炎疫情防控过程中&#xff0c;对疫情发展趋势的科学预测显得尤为重要。而这背后&#xff0c;离不开对传染病传播规律的建模。今天&#xff0c;小编就带各位数学学子们来了解一下传染病的四大经典数学模型&#xff1a;SI/SIS/SIR/SEIR。其中用到了许多微分方程的知识…

vlh 标签详解

1.vlh:root root标签做为所有vlh标签的根标签. 1)value 在给定的范围内&#xff0c;包含在ValueList或list的变量名. List的实例自动被DefaultListBackedValueList包装在ValueList中 2)id 如果有多个表被包含在一个request中&#xff0c;ID属性能区分每个表。id被追加到所…

ubuntu电脑安装硬盘

最近在做安卓开发&#xff0c;一套RK3399的安卓代码&#xff0c;解压编译后占用170多G的硬盘。所以呢&#xff0c;原来1T大小的硬盘&#xff0c;很快就沾满了&#xff0c;然后我赶紧给北京总部申请买了一个新的硬盘。现在的台式电脑都是用的SATA硬盘接口&#xff0c;我赶紧就上…

python 制作抽奖箱_用Excel函数制作抽奖箱

话说各在公司每年的年会上&#xff0c;或者平时的一些分组活动上&#xff0c;又或者是某个内部组织的业务竞赛上……偶尔会遇到抽奖或抽签的环节&#xff0c;例如你的公司开展了一个实操的业务竞赛&#xff0c;一共80道题目&#xff0c;参赛人员要随机抽取题目然后做答。好的&a…

字典表

字典表 &#xff1a; dict 声明 键;值dict(键值) 操作 获取d.get(键‘默认值) 合并d.update(d2) 键值emp.items 菜单emp.keys 效果emp.values得到视图 遍历打印for x in emp.keys 支持嵌套 由于哈希算法导致顺序混乱可以将方法转换为列表&#xff0c;在排序 方法二 全局函…