淘先锋技术网

首页 1 2 3 4 5 6 7

按位运算符包括了 “&”, “|”, “^”之类的

“&”的作用举栗:

5&6
5和6的二进制分别是101和110,那么5&6的意思是在相同位置上的两个数字相同,那么计算结果的相同位置就是1,不同则为0
所以5&6=101&110=100=4

“|”的作用举栗:

|是或运算符,5|6=7
解析:
5和6的二进制分别是101和110,那么5|6的意思是在相同位置上的两个数字其中有一个是1,那么计算结果的相同位置就是1,否则为0
所以5&6=101&110=111=7

“^”的作用举栗: 

^是异或运算符,5^6=3
解析:
5和6的二进制分别是101和110,那么5^6的意思是在相同位置上的两个数字如果相同,那么计算结果的相同位置就是0,否则为1,跟&运算符恰好相反
所以5&6=101&110=011=3

运算符介绍完毕

而此次遇到的问题是怎么在一组数中找出某个非成对的数值,如:从[3,4,6,8,9,8,4,3,6],中找到非成对的9?

看看刚介绍的运算符,或许已经能想到方法了

这儿用到的是异或运算符^

两个相同数的二进制通过^计算后值为0

那么直接循环

nums_count, nums = 0, [3,4,6,8,9,8,4,3,6]
for nums_index in nums:
    nums_count ^= nums_index
print(nums_count)

结果显示nums_count = 9