小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。

废话不多说,开始今天的题目:

问:说说Python中的6种位运算符?

答:在Python中,按位运算符有左移运算符(<<)、右移运算符(>>)、按位与运算(&)、按位或运算(|)、按位取反运算(~)、异或运算符,其中按位取反运算符为单目运算符 。

运算符

描述

实例

&

按位与运算符:参与运算的两个值,如果两个相应位都为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

本文例子来源于:


下面分别来说说这几种Python所有位运算符的操作:

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:

按位与   ( bitwise and of x and y )

 &  举例:5&3 = 1  解释:101  11 相同位仅为个位1 ,故结果为 1

按位或   ( bitwise or of x and y )

|  举例:5|3 = 7  解释:101  11 出现1的位是 1 1 1,故结果为 111

按位异或 ( bitwise exclusive or of x and y )

^  举例:5^3 = 6  解释:101  11 对位相加(不进位)是 1 1 0,故结果为 110

按位反转 (the bits of x inverted )

~  举例:~5 = -6  解释:将二进制数+1之后乘以-1,即~x = -(x+1),-(101 + 1) = -110

按位反转仅能用在数字前面。所以写成 3+~5 可以得到结果-3,写成3~5就出错了

按位左移 ( x shifted left by n bits )

<< 举例:  5<<2 = 20 解释:101 向左移动2位得到 10100 ,即右面多出2位用0补

按位右移 ( x shifted right by n bits )

>> 举例:5>>2 = 1  解释:101 向右移动2位得到 1,即去掉右面的2位

如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!