零、位运算符
位运算符就是将数字转换为二进制进行计算,位运算符包括:按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移动(<<)、右移动(>>)。解释见下表:
假设 a=10 ,b=12
运算符 | 名称 | 说明 | 例子 |
---|---|---|---|
& | 按位与 | 如果参与运算的两个变量,相应位都是1,则该位的结果位1,反之位0 | a&b 结果为8 |
| | 按位或 | 如果对应的二个二进位有一个为1时,结果位就为1 | a |
^ | 按位异或 | 对应的二进位相异时,结果为1 | a^b 结果为6 |
~ | 按位取反 | 对数据的每个二进制位取反,即把1变为0,把0变为1 | ~a 输出结果为 -11 |
<< | 左移动 | 运算数的各二进位全部左移若干位,高位丢弃,低位补0 | a<<11 结果为20480 |
>> | 右移动 | 运算数的各二进位全部右移若干位 | a>>11 结果为0 |
一、成员运算符
成员运算符主要是用于在序列中查找是否包含指定的值。成员运算符包含:in、not in。解释见下表:
假设a=10,b=[1,2,3,4,5,6,7,8,9,0]
运算符 | 说明 | 例子 |
---|---|---|
in | 查找序列中是否存在指定的变量 | a in b 结果为False |
not in | 查找序列中是否不存在指定的变量 | a not in b 结果为True |
二、身份运算符
用于检查两个值(或变量)是否位于存储器的同一部分。(两个变量相等,并不是说完全一样。)身份运算符包含:is、is not。解释如下表:
假设a=1,b=1,c=[0,1,2],d=[0,1,2],e=‘hello’,f=‘hello’
运算符 | 说明 | 例子 |
---|---|---|
is | 是否引用的同一个对象 | a is b结果为True,c is d 结果为False,e is f 结果为True |
is not | 是否引用的不是同一个对象 | a is b结果为False,c is d 结果为True,e is f 结果为False |
三、运算符优先级
运算符优先级见下表:
括号可以提高运算符优先级
运算符 | 解释 |
---|---|
** | 幂运算(优先级最高) |
~± | 按位翻转, 一元加号和减号 |
* / % // | 乘,除,取模和取整除 |
± | 加法减法 |
>> << | 右移,左移运 |
& | 按位与 |
^ | | 按位异或,按位或 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
and or not | 逻辑运算符 |
四、小结
今天所讲的运算符在开发中也是经常使用的,需要牢记。