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
禁止转载,违者必究!
python按位翻转_Python成为专业人士笔记-位操作符相关推荐
- math python 向上取整_Python成为专业人士笔记-各数学运算操作深度剖析
"专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.zhihu.com Python可以执行常见的数学运算符,包括整 ...
- python 全部缩进一行_Python成为专业人士笔记–程序行空白及tab缩进的作用
"专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.zhihu.com python中的空白tab缩进 Python ...
- [转载] [转载] python 去除字符串的标点符号 用_Python成为专业人士笔记–String字符串方法
参考链接: Python字符串| 十六进制 hexdigits 参考链接: Python的字符串Strings decode "专业人士笔记"系列目录: 创帆云:Python成为专 ...
- [转载] python 去除字符串的标点符号 用_Python成为专业人士笔记–String字符串方法
参考链接: Python的字符串Strings decode "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.z ...
- python方法和函数的格式是完全一样的_Python成为专业人士笔记-返回变量形式函数- str() 和 repr()...
"专业人士笔记"系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.zhihu.com 有两个函数可用于获取对象的可读表示 ,常用于打 ...
- 用python开发一款云笔记_Python成为专业人士笔记–os模块
"专业人士笔记"系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.zhihu.com 简述 这个模块提供了一些使用与操作系统相关功能 ...
- python列表操作计算列表长度并输出_Python成为专业人士笔记–List列表
专业人士笔记"系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.zhihu.com Python列表是Python程序中广泛使用的一种通用数据 ...
- angular 字符串转换成数字_Python成为专业人士笔记–String字符串方法
"专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.zhihu.com 更改字符串的大小写 Python的字符串类型 ...
- easy excel date 类型解析报错_Python成为专业人士笔记-date 对象、time 对象及datetime用法深度剖析...
"专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.zhihu.com 将字符串解析为对应时区的datetime对象 ...
最新文章
- 输入字符串中含有该字符的个数
- 【AI-1000问】为什么OpenCV读取的图像格式是BGR?
- Linux accept tcp,Linux TCP accept without SYN|ACK
- c语言中文件读写面试题,在C ++中有效读取非常大的文本文件
- element-ui走马灯如何实现图片自适应
- python主要用于做什么-python主要用于哪些方向
- axios 全局配置
- 构架https服务器
- SQL,C#查询Excel数据
- 实验server2003的域环境里安装一台Server2008 DC
- linux安装桌面键盘,如何在 Linux 中使用屏幕键盘
- SimpleITK读取DCM文件
- 《像混球那样思考和行动》
- 这个小众副业,一次200,有人月入3万!
- c语言flappy bird编程,C语言实现Flappy Bird小游戏
- @Value 获取乱码 问题解决
- JSM-ActiveMQ
- 微信小程序的登录界面实现
- FPGA设计——图像处理(锐化增强)
- springboot启动报错: Consider defining a bean of type ‘XXX‘ in your configuration
热门文章
- 14--用两个栈实现队列
- mybatis foreach map_重学Mybatis(六)-------输入映射(含面试题)
- 硬盘显示容量和实际容量不符合_买移动固态硬盘纠结大半天?花2分钟看完这篇,购买时不再被坑...
- 两种解除禁止右键、选中、复制的方法
- steam一键授权工具_半个东的时间让你省了一个亿 Steam免费游戏一键领取
- redhat虚拟机安装
- python编写命令行框架_python的pytest框架之命令行参数详解(上)
- java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...
- “返回指向栈空间的指针”的错误
- 利用Python对文件进行批量重命名——以图片文件为例