The Hamming Distance [位運算]
阿新 • • 發佈:2018-11-19
前面:
>> #右移 << #左移 | #位或 & #位與 ^ #位異或 ~ #非 0b11 << 2 #輸出為12, 即0b1100 0b11 >> 1 #輸出為1, 即0b1 -8 >> 3 #輸出為-1 '''在Python中如果符號位為0,則右移後高位補0,如果符號位為1,則高位補1; 同樣需要先轉化為補碼再進行計算,以-8 >> 3為例,-8的原碼為10...01000,相應的補碼為11...11000,右移後變為1...1,相應的原碼為10...01,即-1。 右移操作相當於除以2**n,8 >> 3相當於8/(2**3)=1'''
思路 : 異或
程式碼如下:
# The Hamming Distance # def checkio(n, m): return str(bin(m^n)).count('1') if __name__ == '__main__': #These "asserts" using only for self-checking and not necessary for auto-testing assert checkio(117, 17) == 3, "First example" assert checkio(1, 2) == 2, "Second example" assert checkio(16, 15) == 5, "Third example"