【循序渐进学Python】Python基础——按位运算符

我们都知道程序中的所有数在计算机内存中都是以二进制的形式储存的.

这个时候就有人问了二进制形式储存又和我们今天要讲的按位运算符又有什么关系呢?

接下就由我来为大家解答.

什么是按位运算符?

按位运算符就是把数字换算成二进制来进行计算。

Python中的按位运算符怎么使用呢?

按位与(&)

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

举例:

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

print(5 & 3)

按位或(|)

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

举例:

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

print(5 | 3)

按位异或(^)

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

举例:

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

print(5 ^ 3)

按位反转(~)

取反(~),按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1

举例:

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

print(~5)

注意:

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

按位左移(<<)

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

举例:

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

print(5 << 2)

按位右移(>>)

右位移(>>),把‘>>’左边的运算数的各二进制位全部右移若干位,>>右边的数字指定了移动的位数

举例:

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

print(5 >> 2)

八进制,Octal,缩写OCT或O,一种以8为基数的计数法.

  • 采用0,1,2,3,4,5,6,7八个数字,逢八进1。
  • 一些编程语言中常常以数字0开始表明该数字是八进制。
  • 八进制的数和二进制数可以按位对应(八进制一位对应二进制三位),因此常应用在计算机语言中。

十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法.

  • 同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。
  • 与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。

正数与负数的源码,补码和反码

  • 正数的源码与补码、反码一致.
  • 负数的反码是将其源码除符号位之外的各位求反,负数的补码是将其源码出符号位之外的各位求反后再加1。