小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。
废话不多说,开始今天的题目:
问:说说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位
如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!
更多题目: