python:第三十六章:位运算符
一,位运算符:
&:按位与运算符:
参与运算的两个值,如果两个对应位都是1,则该位的结果值为1,否则为0
|:按位或运算符:
只要对应的二个二进位有一个为1时,结果位就为1;
^:按位异或运算符:
如果两个对应位值不同,则该位的结果值为1,否则为0;
~:按位取反运算符:
对数据的每个二进制位取反,即把1变为0,把0变为1;
>>:右移动运算符:
把 >> 左边的运算数的各二进位全部右移指定位数,>> 右边的数指定移动的位数,左侧补0或符号位;
<<:左移动运算符:
运算数的各二进位全部左移指定位数,由 << 右边的数指定移动的位数,高位丢弃,低位补0。
说明:刘宏缔的架构森林—专注it技术的博客,
网站:https://blog.imgtouch.com
原文: https://blog.imgtouch.com/index.php/2023/11/18/python-wei-yun-suan/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# 按位与:如果两个对应位都是1,则该位的结果值为1,否则为0 a = 0b1100 b = 0b1010 c = a & b print ( "按位与:原值a:" , a, "原值b:" , b, ";结果值c:" , c, ";二进制:" , bin (c)) # 输出0b1000 # 按位或:如果两个对应位至少有一个是1,则该位的结果值为1,否则为0 a = 0b1100 b = 0b1010 c = a | b print ( "按位或:原值a:" , a, "原值b:" , b, ";结果值c:" , c, ";二进制:" , bin (c)) # 输出 0b1110 # 按位异或:如果两个对应位值不同,则该位的结果值为1,否则为0 a = 0b1100 b = 0b1010 c = a ^ b print ( "按位异或:原值a:" , a, "原值b:" , b, ";结果值c:" , c, ";二进制:" , bin (c)) # 输出 0b110 # 按位取反:操作数的二进制位中,每个位都被取反,即0变成1,1变成0 a = 10 b = ~a print ( "按位取反:原值:" , a, ";取反后:" , b, ";二进制:" , bin (b)) # 输出 -0b1101 # 左移位:把操作数的二进制位向左移动指定的位数,高位丢弃,低位补0 a = 0b1100 b = a << 2 print ( "左移位:原值:" , a, ";左移位后:" , b, ";二进制:" , bin (b)) # 输出 0b110000 a = 5 b = a << 2 print ( "左移位:原值:" , a, ";左移位后:" , b, ";二进制:" , bin (b)) # 输出 0b10100 # 右移位:把操作数的二进制位向右移动指定的位数,左侧补0或符号位 a = 0b1100 b = a >> 2 print ( "右移位:原值:" , a, ";右移位后:" , b, ";二进制:" , bin (b)) # 输出 0b11 a = 5 b = a >> 1 print ( "右移位:原值:" , a, ";右移位后:" , b, ";二进制:" , bin (b)) # 输出 0b10 |
运行结果:
按位与:原值a: 12 原值b: 10 ;结果值c: 8 ;二进制: 0b1000
按位或:原值a: 12 原值b: 10 ;结果值c: 14 ;二进制: 0b1110
按位异或:原值a: 12 原值b: 10 ;结果值c: 6 ;二进制: 0b110
按位取反:原值: 10 ;取反后: -11 ;二进制: -0b1011
左移位:原值: 12 ;左移位后: 48 ;二进制: 0b110000
左移位:原值: 5 ;左移位后: 20 ;二进制: 0b10100
右移位:原值: 12 ;右移位后: 3 ;二进制: 0b11
右移位:原值: 5 ;右移位后: 2 ;二进制: 0b10