python中的位运算

这篇博客介绍了Python中的位运算,包括其规则和实例演示。通过具体的计算示例,如2、15、13、-11、5、40等,展示了位运算如何在二进制层面操作数字。此外,还提供了相关的学习资源链接。

python中的位运算将数字看作二进制进行计算。

1. 规则
运算符说明描述
&按位与运算符参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
|按位或运算符只要对应的二个二进位有一个为1时,结果位就为1
^按位异或运算符当两对应的二进位相异时,结果为1
~按位取反运算符对数据的每个二进制位取反,即把1变为0,把0变为1
<<左移运算符运算数的各二进位全部左移若干位,由”<<”右边的数指定移动的位数,高位丢弃,低位补0
>>右移运算符把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数
2. 例子演示
m = 10			# 10 = 1010
n = 7     		# 7 = 0111
k = -6			# -6 = - 0110 = 1010(补码表示,最高位的1是看不见的)
print(m & n)	# 1010 & 0111 = 0010
print(m | n)	# 1010 | 0111 = 1111
print(m ^ n)	# 1010 ^ 0111 = 1101
# 说明:在取反时,正数变负数,负数变正数,取完反时,负数在计算机用补码表示
print(~m)		# ~1010 =  0101(取反变负数,补码表示,原码 = 1011 = -11)
print(~k)		# ~1010 = 0101 = 5 (取反变正数) 
print(m << 2) 	# 1010 << 2 = 0010 1000
print(n >> 2)		# 0111 >> 2 = 0001
  • 输出

2
15
13
-11
5
40
1

3. 有用的链接
  • https://blog.youkuaiyun.com/u012559520/article/details/65630436
  • https://blog.youkuaiyun.com/MTbaby/article/details/53100663
### Python中按位运算的使用方法和原理 #### 按位运算的基本概念 按位运算符(bitwise operators)用于对整数类型的二进制位进行操作。Python中常见的按位运算包括按位与(`&`)、按位或(`|`)、按位异或(`^`)、按位取反(`~`)、左移(`<<`)和右移(`>>`)。这些操作直接作用于整数的二进制表示,因此在底层编程、性能优化和数据处理中具有重要作用。 #### 按位与(`&`) 按位与操作对两个操作数的每一位执行逻辑与运算。如果两个对应的二进制位都为1,则结果位为1;否则为0。该操作符也可用于非布尔类型的整数运算,与逻辑运算符`&&`不同,后者仅用于布尔表达式[^1]。 ```python a = 5 # 二进制: 0101 b = 3 # 二进制: 0011 result = a & b # 二进制: 0001 → 十进制: 1 ``` #### 按位或(`|`) 按位或操作对两个操作数的每一位执行逻辑或运算。只要两个对应的二进制位中有一个为1,则结果位为1;否则为0。 ```python a = 5 # 0101 b = 3 # 0011 result = a | b # 0111 → 十进制: 7 ``` #### 按位异或(`^`) 按位异或操作对两个操作数的每一位执行逻辑异或运算。如果两个对应的二进制位不同,则结果位为1;否则为0。 ```python a = 5 # 0101 b = 3 # 0011 result = a ^ b # 0110 → 十进制: 6 ``` #### 按位取反(`~`) 按位取反操作对操作数的每一位执行逻辑非运算。它将每一位取反,即将0变为11变为0。在Python中,整数采用补码形式表示,因此`~x`等价于`-x-1`。 ```python a = 5 # 0101 result = ~a # 结果为 -6 ``` 该运算符的优先级与其它一元运算符(如正负号)相同,低于算术运算符,但高于比较运算符[^2]。 #### 左移(`<<`)和右移(`>>`) 左移操作将操作数的二进制位向左移动指定的位数,右侧空出的位用0填充。右移操作则将二进制位向右移动,左侧空出的位用符号位填充(对于负数)或0填充(对于正数)。 ```python a = 5 # 0101 result_left = a << 1 # 1010 → 十进制: 10 result_right = a >> 1 # 0010 → 十进制: 2 ``` 这些位移操作常用于高效地实现乘法和除法运算,例如左移一位相当于乘以2。 #### 按位运算的应用场景 按位运算在多个领域具有广泛应用: - **位掩码(bitmask)**:用于设置、清除或检查特定的位标志。 - **权限控制**:例如在操作系统中使用位掩码表示文件访问权限。 - **加密与编码**:如在哈希算法、CRC校验和压缩算法中使用异或操作。 - **性能优化**:在嵌入式系统和底层编程中,位运算比算术运算更高效。 #### 与其他运算的优先级关系 按位运算的优先级介于算术运算和比较运算之间。例如,加法和减法的优先级高于按位与、或和异或;而按位运算的优先级又高于比较运算(如`==`、`<`等)。这种优先级安排确保了表达式的自然解析顺序,例如在位掩码操作中不需要额外的括号。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值