Python中提供了bin函数,可以获得一个整形数字的二进制表示,下面通过示例程序来了解Python中的6种位运算符:
a = 6 b = 17 print('a 对应的二进制值 %s' % bin(a)) print('b 对应的二进制值 %s' % bin(b)) # & 按位与,两个相应位都为1则为1,否则为0 print('a & b = %s 对应十进制的值为: %d' % (bin(a & b), a & b)) # | 按位或,两个相应位有一个为1,则为1,两个都不为0,才为0 print('a | b = %s 对应十进制的值为: %d' % (bin(a | b), a | b)) # ^ 异或,两个相应位不同为1,相同为0 print('a ^ b = %s 对应十进制的值为: %d' % (bin(a ^ b), a ^ b)) # ~ 按位取反,二进制位取反,0变1,1变0 print('~a = %s 对应十进制的值为:%a' % (bin(~a), ~a)) # << 左移运算符,所有位向左移一定位数,高位丢弃,低位补0 print('a << 2 = %s 对应十进制的值为:%a' % (bin(a << 2), a << 2)) # >> 右移运算符,所有位向右移一定位数 print('a >> 2 = %s 对应十进制的值为:%a' % (bin(a >> 2), a >> 2))
输出结果如下:
a 对应的二进制值 0b110 b 对应的二进制值 0b10001 a & b = 0b0 对应十进制的值为: 0 a | b = 0b10111 对应十进制的值为: 23 a ^ b = 0b10111 对应十进制的值为: 23 ~a = -0b111 对应十进制的值为:-7 a << 2 = 0b11000 对应十进制的值为:24 a >> 2 = 0b1 对应十进制的值为:1
④ 逻辑运算符(3种)
Python中提供了三种逻辑运算符,分别是:and
(逻辑与),or
(逻辑或),not
(逻辑非),一般在条件判断的时候会用到,代码示例如下:
score = 70 # 逻辑与,两个表达式都成立,才执行 if score > 60 and score < 100: print('分数及格') # 逻辑或,有一个表达式成立就执行 score = -10 if score < 0 or score > 100: print("分数值非法,不能小于0或者大于100") # 逻辑非,逆转,表达式成立的话反而不执行 score = 100 if not score == 100: print("没有满分") else: print("满分")
输出结果如下:
分数及格 分数值非法,不能小于0或者大于100 满分
⑤ 成员运算符(2种)
Python提供了成员运算符,用于「判断指定的序列中是否有某个特定的值」,in
和 not in
,
比如判断列表中是否有某个特定的值的代码示例如下:
people_list = ['小明', '小红', '小白', '小猪'] if '小猪' in people_list: print("小猪在列表里") if '大猪' not in people_list: print("大猪不在列表里")
输出结果如下:
小猪在列表里 大猪不在列表里
⑥ 身份运算符(2种)
Python中提供了身份运算符用于「判断两个标识符是不是引用自一个对象」,is
和 is not
,使用示例如下:
# 普通数据类型 a = 1 b = 1 print('当前a和b引用同一个变量:%s' % (a is b)) # 复杂数据类型(数组) a = [1] b = [1] print('当前a和b引用不同一个变量:%s' % (a is not b)) # 字符串 a = 'python' b = 'python' print('当前a和b引用同一个变量:%s' % (a is b))
输出结果如下:
当前a和b引用同一个变量:True 当前a和b引用不同一个变量:True 当前a和b引用同一个变量:True
⑦ 运算符优先级
Python中的运算符优先级如表所示:
运算符 | 描述 |
** |
指数 |
~ + - |
取反,正负号 |
* / % // |
乘除,求余,地板除法 |
<< >> |
左右移 |
& |
按位与 |
^ |
异或,按位或 |
> < <= > >= |
比较运算符 |
<> == != |
等于运算符 |
= %= /= //= -= += *= **= |
赋值运算符 |
is is not |
身份运算符 |
in not in |
成员运算符 |
not or and |
逻辑运算符 |