“专业人士笔记”系列目录:创帆云: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成为专业人士笔记-位操作符相关推荐

  1. math python 向上取整_Python成为专业人士笔记-各数学运算操作深度剖析

    "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com Python可以执行常见的数学运算符,包括整 ...

  2. python 全部缩进一行_Python成为专业人士笔记–程序行空白及tab缩进的作用

    "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com python中的空白tab缩进 Python ...

  3. [转载] [转载] python 去除字符串的标点符号 用_Python成为专业人士笔记–String字符串方法

    参考链接: Python字符串| 十六进制 hexdigits 参考链接: Python的字符串Strings decode "专业人士笔记"系列目录: 创帆云:Python成为专 ...

  4. [转载] python 去除字符串的标点符号 用_Python成为专业人士笔记–String字符串方法

    参考链接: Python的字符串Strings decode "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.z ...

  5. python方法和函数的格式是完全一样的_Python成为专业人士笔记-返回变量形式函数- str() 和 repr()...

    "专业人士笔记"系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com 有两个函数可用于获取对象的可读表示 ,常用于打 ...

  6. 用python开发一款云笔记_Python成为专业人士笔记–os模块

    "专业人士笔记"系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com 简述 这个模块提供了一些使用与操作系统相关功能 ...

  7. python列表操作计算列表长度并输出_Python成为专业人士笔记–List列表

    专业人士笔记"系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com Python列表是Python程序中广泛使用的一种通用数据 ...

  8. angular 字符串转换成数字_Python成为专业人士笔记–String字符串方法

    "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com 更改字符串的大小写 Python的字符串类型 ...

  9. easy excel date 类型解析报错_Python成为专业人士笔记-date 对象、time 对象及datetime用法深度剖析...

    "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com 将字符串解析为对应时区的datetime对象 ...

最新文章

  1. 输入字符串中含有该字符的个数
  2. 【AI-1000问】为什么OpenCV读取的图像格式是BGR?
  3. Linux accept tcp,Linux TCP accept without SYN|ACK
  4. c语言中文件读写面试题,在C ++中有效读取非常大的文本文件
  5. element-ui走马灯如何实现图片自适应
  6. python主要用于做什么-python主要用于哪些方向
  7. axios 全局配置
  8. 构架https服务器
  9. SQL,C#查询Excel数据
  10. 实验server2003的域环境里安装一台Server2008 DC
  11. linux安装桌面键盘,如何在 Linux 中使用屏幕键盘
  12. SimpleITK读取DCM文件
  13. 《像混球那样思考和行动》
  14. 这个小众副业,一次200,有人月入3万!
  15. c语言flappy bird编程,C语言实现Flappy Bird小游戏
  16. @Value 获取乱码 问题解决
  17. JSM-ActiveMQ
  18. 微信小程序的登录界面实现
  19. FPGA设计——图像处理(锐化增强)
  20. springboot启动报错: Consider defining a bean of type ‘XXX‘ in your configuration

热门文章

  1. 14--用两个栈实现队列
  2. mybatis foreach map_重学Mybatis(六)-------输入映射(含面试题)
  3. 硬盘显示容量和实际容量不符合_买移动固态硬盘纠结大半天?花2分钟看完这篇,购买时不再被坑...
  4. 两种解除禁止右键、选中、复制的方法
  5. steam一键授权工具_半个东的时间让你省了一个亿 Steam免费游戏一键领取
  6. redhat虚拟机安装
  7. python编写命令行框架_python的pytest框架之命令行参数详解(上)
  8. java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...
  9. “返回指向栈空间的指针”的错误
  10. 利用Python对文件进行批量重命名——以图片文件为例