![Python编程基础与应用](https://wfqqreader-1252317822.image.myqcloud.com/cover/854/41309854/b_41309854.jpg)
上QQ阅读APP看书,第一时间看更新
1.5.3 位运算符
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/42_03.jpg?sign=1739553332-9Fmw8RDtnKFzOckP9YuKspAggmsjdNeC-0-8acbe1f9fc8c5effd818f2539b8f8886)
1-10 位运算符
位运算按照数据在内存中的二进制位(bit)进行操作,它一般用于算法设计、驱动、图像处理、单片机等底层开发。位运算符只能用来操作整数类型,它按照整数在内存中的二进制形式进行计算。Python支持的位运算符如表1-8所示。
表1-8 位运算符及功能说明
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/42_04.jpg?sign=1739553332-UqzgPsoQhiIdp87uXZ5axrlYE5VNZvPH-0-75f65c2521dab872ebdb5d64c717819a)
位运算指令使用“0”“1”两个布尔操作数(bool)对位状态进行逻辑操作,逻辑操作的结果送入存储器Y中。表1-9到表1-12为对应的逻辑“与”“或”“异或”和“取反”运算。
表1-9 逻辑“与”运算
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/42_05.jpg?sign=1739553332-0wbv7UXNIDjhJAF7Hq9eghj4INmncwNB-0-109ffddc4112475986fc8bd93ca12f94)
表1-10 逻辑“或”运算
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/42_06.jpg?sign=1739553332-2qujdQHp5z8drOsTyXbjrlTt3LBEg93O-0-efe06d3da0d8ea72b5cdf189a6ebb33c)
表1-11 逻辑“异或”运算
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/42_07.jpg?sign=1739553332-DFC3bkc5aTb852YwBHBDaCDs9r7IsccJ-0-62fe39cd9ce737c26a3c890308b0f0e9)
表1-12 逻辑“取反”运算
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/42_08.jpg?sign=1739553332-fJhcTwww2YKPlqQozi000AkWdgX2w5DU-0-b51be7a1f662062ffdf1be845839fb4e)
左移运算符“<<”用来把操作数的各个二进制位全部左移若干位,高位丢弃,低位补0。
例如,9<<3可以转换为如下的运算:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/43_01.jpg?sign=1739553332-NBmBPIPZuo8aeC4w7jGX2xbTcp0jzmDq-0-754cf6151c90a4a346164366daae041f)
右移运算符“>>”用来把操作数的各个二进制位全部右移若干位,低位丢弃,高位补0或1。如果数据的最高位是0,那么就补0;如果最高位是1,那么就补1。
例如,9>>3可以转换为如下的运算:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/43_02.jpg?sign=1739553332-w52QC9V8rZzX42B5UDTgryNtfatoQqvr-0-322a6ce16b86219b377ada2bc60ba193)
【例1-27】 位运算。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/43_03.jpg?sign=1739553332-f0Lt065WA3tkwyaMBOfDH7VfpIIbLk2Y-0-d48ffbb1ffc77cbf3779b5366d883512)
运算结果:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/43_04.jpg?sign=1739553332-G1V4q04kxufpDXGUMXmD8W285lQpgxN3-0-d7f97483b515d3ab9e2e9356afab529d)
例中出现的-7,其二进制的写法是“各位取反,再加一”,即11111001。