关于python:大话-Pythonpython-基础巩固-位运算的奥妙

49次阅读

共计 2237 个字符,预计需要花费 6 分钟才能阅读完成。

位运算是间接对内存中的二进制位进行操作,因而,它的运算效率相比个别的数学运算是比拟高的。个别状况下,位运算次要分为六种:与运算、或运算、异或运算、取反运算、左移运算、右移运算。

在开始之前,先介绍一下将十进制转换成二进制的办法。为节约篇幅阐明前面的内容,此处咱们间接应用 python 内置的 bin() 函数将整数转换为二进制。

留神:若操作系统为 32 位,则二进制依据位数补全 32 位即可,以下用低位阐明问题,如 10 的二进制计算出为 1010,则补全 32 位应为 00000000000000000000000000001010。

1def toBin(num):
2   # 十进制转换成二进制
3   res = bin(int(num))
4   # 去掉前两位,因为内置函数转换后后面两个字符是 0b
5   return res[2:]
6
7if __name__ == '__main__':
8   print toBin(10)

1、与运算

 1def toBin(num):
 2   # 十进制转换成二进制
 3   res = bin(int(num))
 4   # 去掉前两位,因为内置函数转换后后面两个字符是 0b
 5   return res[2:]
 6
 7if __name__ == '__main__':
 8   print toBin(10)
 9   后果 10 的二进制是 1010
10   print toBin(8)
11   后果 8 的二进制是 1000
12   依据二进制“与”的计算规定:两个数的雷同位都为 1 时则比照后果为 1,否则为 0
13   比照后果:1000 转为 10 进制也就是 8
14   print 10 & 8
15   8

2、或运算

 1def toBin(num):
 2   # 十进制转换成二进制
 3   res = bin(int(num))
 4   # 去掉前两位,因为内置函数转换后后面两个字符是 0b
 5   return res[2:]
 6
 7if __name__ == '__main__':
 8   print toBin(10)
 9   后果 10 的二进制是 1010
10   print toBin(8)
11   后果 8 的二进制是 1000
12   依据二进制“或”的计算规定:对应的两个二进位有一个为 1 时后果位就为 1,否则为 0
13   比照后果:1010 转为 10 进制也就是 10
14   print 10 | 8
15   10

3、异或运算

 1def toBin(num):
 2   # 十进制转换成二进制
 3   res = bin(int(num))
 4   # 去掉前两位,因为内置函数转换后后面两个字符是 0b
 5   return res[2:]
 6
 7if __name__ == '__main__':
 8   print toBin(10)
 9   后果 10 的二进制是 1010
10   print toBin(8)
11   后果 8 的二进制是 1000
12   依据二进制“异或”的计算规定:两个对应的二进位相异时后果为 1,否则为 0
13   比照后果:0010 转为 10 进制也就是 2
14   print 10 ^ 8
15   2

4、取反运算

 1# 负数按位取反
 2def toBin(num):
 3   # 十进制转换成二进制
 4   res = bin(int(num))
 5   # 去掉前两位,因为内置函数转换后后面两个字符是 0b
 6   return res[2:]
 7
 8if __name__ == '__main__':
 9   print toBin(10)
10   后果 10 的二进制是 1010
11   依据二进制“负数取反”的计算规定:首先 10 为负数它的补码应该为 01010,12   紧接着按位取反为 10101,再转为原码为 11010,再对原码加 1 为 11011,则最初后果为 -11
13   print ~10
14   -11
15   也能够间接应用公式计算:~10 = -(10 + 1)

5、左移运算

 1def toBin(num):
 2   # 十进制转换成二进制
 3   res = bin(int(num))
 4   # 去掉前两位,因为内置函数转换后后面两个字符是 0b
 5   return res[2:]
 6
 7if __name__ == '__main__':
 8   print toBin(10)
 9   后果 10 的二进制是 1010
10   依据二进制“左移”的计算规定:将位数将左挪动, 遵循低位补 0、高位抛弃
11   向左挪动一位
12   比照后果:01010 转为 10 进制也就是 20
13   print 10 << 1
14   20

6、右移运算

 1def toBin(num):
 2   # 十进制转换成二进制
 3   res = bin(int(num))
 4   # 去掉前两位,因为内置函数转换后后面两个字符是 0b
 5   return res[2:]
 6
 7if __name__ == '__main__':
 8   print toBin(10)
 9   后果 10 的二进制是 1010
10   依据二进制“右移”的计算规定:将位数向右挪动, 遵循低位抛弃、高位补 0 或补 1(负数补 0、正数补 1)11   向右挪动一位
12   比照后果:0101 转为 10 进制也就是 5
13   print 10 >> 1
14   5

更多精彩返回微信公众号【Python 集中营】,专一后端编程实战,原创文章每天更新!

正文完
 0