Python 程序设计讲义(15):Python 的数据运算——位运算

发布于:2025-07-25 ⋅ 阅读:(15) ⋅ 点赞:(0)

Python 程序设计讲义(15):Python 的数据运算——位运算

程序中的所有数据都是以二进制的形式存储的。位运算是指直接按照数值的二进制形式进行运算。位运算包括位逻辑运算与移位运算。

一、位逻辑运算

位逻辑运算是指对二进制数的每一位进行数值运算。Python 的位逻辑运算包括:位与运算、位或运算、位异或运算和取反运算。

1、位与运算

位与运算用符号 &表示,将两个二进制数的每一位进行运算。如果相同位的数都为 1,则对应的结果位也为 1,若有一个不为 1,则对应的结果位为 0。运算时,如果两个二进制数位数不同,则再较短的二进制左边补 0。

例如:

a=0b1101
b=0b1010
print(a&b,bin(a&b))
a=12 #二进制为:1100
b=6  #二进制为:0110
print(a&b,bin(a&b))

运算结果为:
8 0b1000
4 0b100
2、位或运算

位或运算用符号 |表示,将两个二进制数的每一位进行运算。如果相同位的数有一个为 1 或两个都为 1,则对应的结果位也为 1,如果两个都 0,则对应的结果位为 0。运算时,如果两个二进制数位数不同,则再较短的二进制左边补 0。

例如:

a=0b1101
b=0b1010
print(a|b,bin(a|b))
a=12 #二进制为:1100
b=6  #二进制为:0110
print(a|b,bin(a|b))

运算结果为:
15 0b1111
14 0b1110
3、位异或运算

位异或运算用符号 ^表示,将两个二进制数的每一位进行运算。如果相同位的数不相同,则对应的结果位为 1,如果相同位的数相同,则对应的结果位为 0。运算时,如果两个二进制数位数不同,则再较短的二进制左边补 0。

例如:

a=0b1101
b=0b1010
print(a^b,bin(a^b))
a=12 #二进制为:1100
b=6  #二进制为:0110
print(a^b,bin(a^b))

运算结果为:
7 0b111
10 0b1010
4、取反运算

取反运算用符号 ~表示,对二进制数进行取反操作。取反运算首先将二进制数加 1,然后取其负值。

例如:

a=0b1101
b=5 #二进制为:101
print(~a,bin(~a))
print(~b,bin(~b))

运算结果为:
-14 -0b1110
-6 -0b110

二、移位运算

移位运算包含左移位和右移位。

1、左移位运算

左移位运算使用符号<<表示。将二进制数整体向左移动指定的位数。

格式如下:

0bxx<<n
说明:0bxx表示一个二进制数,n表示将该二进制数向左移动n位。

左移位运算用于增大数值,向左移动 1 位,则二进制数的值变为原来的 2 倍,向左移动 2 位,则则二进制数的值变为原来的 4 倍,以此类推。

例如:

a=0b1101  #十进制数13
b=5 #二进制为:101
print(a<<2,bin(a<<2))  #a变为原来的4倍
print(b<<1,bin(b<<1))  #b变为原来的2倍

运算结果为:
52 0b110100
10 0b1010
2、右移位运算

右移位运算使用符号>>表示。将二进制数整体向右移动指定的位数。

格式如下:

0bxx>>n
说明:0bxx表示一个二进制数,n表示将该二进制数向右移动n位。

右移位运算用于减小数值,向右移动 1 位,则二进制数的值变为原来的二分之一(取整),向右移动 2 位,则则二进制数的值变为原来的四分之一(取整),以此类推。

例如:

a=0b1101  #十进制数13
b=5 #二进制为:101
print(a>>2,bin(a>>2))  #a变为0011
print(b>>1,bin(b>>1))  #b变为010

运算结果为:
3 0b11
2 0b10

网站公告

今日签到

点亮在社区的每一天
去签到