热线电话:13121318867

登录
2019-01-30 阅读量: 860
python面试可能会遇到的位运算符计算?

python运算符有七大类,分别是:

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符

其中使用较少,但是常常被用来做面试题的便有“位运算符”,下面我们来看看如何理解它


要理解位运算符,先来理解二进制:

二进制表示60,即为0011 1100,翻译过来就是--

60=0*2**7+0*2**6+1*2**5+1*2**4+1*2**3+1*2**2+0*2**1+0*2**0


再来理解位运算符都有哪些计算逻辑:

60和13的二进制表达为--

60=0011 1100 13=0000 1101

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

  • 60&13=0000 1100=0*2**7+0*2**6+0*2**5+0*2**4+1*2**3+1*2**2+0*2**1+0*2**0=12

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

  • 60|13=0011 1101=0*2**7+0*2**6+1*2**5+1*2**4+1*2**3+1*2**2+0*2**1+1*2**0=61

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

  • 60^13=0011 0001=0*2**7+0*2**6+1*2**5+1*2**4+0*2**3+0*2**2+0*2**1+1*2**0=49

4)~:按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x类似于-x-1

  • ~60=-(0011 1100+1)=-0011 1101
  • =-(0*2**7+0*2**6+1*2**5+1*2**4+1*2**3+1*2**2+0*2**1+1*2**0=-61
计算机中的符号数有3种表示方法,即原码、反码和补码;3种方法均有符号位和数值位,符号位0表示正,1表示负
欲求其原码,需先对其取“”,然后再加1;也可以简单理解为~a=-(a+1)

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

  • 60<<2=1111 0000=1*2**7+1*2**6+1*2**5+1*2**4+0*2**3+0*2**2+0*2**1+0*2**0=240

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

  • 60>>2=0000 1111=0*2**7+0*2**6+0*2**5+0*2**4+1*2**3+1*2**2+1*2**1+1*2**0=15
0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子