按位运算符是把数字看作二进制来进行计算。
a = 60; b = 13
进行按位运算时,首先把数字换成二进制
a = 0011 1100
b = 0000 1101
a&b = 0000 1100
&按位与:位数对应,全部为1,则对应结果位为1,否则为0
a|b = 0011 1101
|按位或:位数对应,有一个为1,则对应结果位为1,否则为0
a^b = 0011 0001
^按位异或:位数对应,不相同则对应结果位为1,相同则为0
~a = 1100 0011
~按位取反:1换成0,0换成1
x<<y左移位:将x的二进制数向左移动y位,右边空出部分填0
a<<3 = 480
(即:0011 1100向左移动3位变成0001 1110 0000)
数学上,x<<y相当于x乘以2的y次方。60<<3 = 60 x (2x2x2) = 480
x>>y右移位:将x的二进制数向右移动y位,右边超出部分(不论0、1)直接除去
a>>3 = 7
(即:0011 1100向右移动3位变成0000 0111)
运算符优先级
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘AND’ |
^ 丨 | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |