【从零学习python 】08.Python了解位运算符, 运算符优先级

2024-02-29 19:53:04 浏览数 (2)

位运算符(了解)

按位运算符是把数字看作是二进制来进行计算的。 下表中变量 a 为 60,b 为 13,二进制格式如下:

代码语言:javascript复制
a = 0011 1100  # 60的二进制
b = 0000 1101  # 13的二进制

a & b = 0000 1100 a | b = 0011 1101 a ^ b = 0011 0001 ~a = 1100 0011

位运算

描述

示例

&

按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

(a & b) 输出结果 12 ,二进制解释:0000 1100

|

按位或运算符:只要对应的两个二进位有一个为1时,结果位就为1

(a | b) 输出结果 61 ,二进制解释:0011 1101

^

按位异或运算符:当两对应的二进位相异时,结果为1

(a ^ b) 输出结果 49 ,二进制解释:0011 0001

~

按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1

(~a) 输出结果 -61 ,二进制解释:1100 0011,在一个有符号二进制数的补码形式。

<<

左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0

a << 2 输出结果 240 ,二进制解释:1111 0000

>>

右移动运算符:把 >> 左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数

a >> 2 输出结果 15 ,二进制解释:0000 1111

练习

以下练习难度较高,只需要能看懂代码即可,不要求写出。

使用位运算,获取到十六进制颜色 0xF0384E 的RGB值,以十进制形式打印输出。

运算符优先级

当多种运算符做混合运算时,就会涉及到先运算哪个,后运算哪个问题。以下表格列出了从最高到最低优先级的所有运算符:

运算符

描述

**

指数 (最高优先级)

~ -

按位翻转, 一元加号和减号

* / % //

乘,除,取模和取整除

-

加法减法

>> <<

右移,左移运算符

&

位 ‘AND’

^ |

位运算符

<= < > >=

比较运算符

<> == !=

等于运算符

= %= /= //= -= = *= **=

赋值运算符

is is not

身份运算符

in not in

成员运算符

not and or

逻辑运算符

练习

代码语言:javascript复制
print(True or False and True)
print(False or not False)
print(True or True and False)

a = 2
print(a ** 3 > 5 and a   2 > 3 or a * 4   8 == 16 and not a == True and -a < 0)

总结:

在以后的实际开发中,如果有多种运算符进行混合运算时,强烈建议使用小括号来手动的控制运算符的优先级!

代码语言:javascript复制
b = True or True and False    # bad 
c = True or (True and False)  # good

0 人点赞