python:第三十六章:位运算符

发布时间 2023-11-21 08:16:24作者: 刘宏缔的架构森林

一,位运算符:

&:按位与运算符:

      参与运算的两个值,如果两个对应位都是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