減一與運算計算漢明重量

2021-08-24 20:55:27 字數 659 閱讀 9811

刷leetcode還是能學到很多小知識的,今天學到了如何在二進位制數中快速輸出有幾個1, 二進位制中1的個數也稱為漢明重量

思路很簡單:

1、設個數為0,原始資料是n

2、如果n等於0,輸出個數,如果不等於零,n = n & (n-1)

3、個數加1,迴圈(2)

舉個例子就很清楚了

n == 01001

n = n & (n-1) = (01001) & (01000) = 01000

n == 01000

n = n & (n-1) = (01000) & (00111) = 00000

這個巧妙的思路能夠一步步的把最後乙個1去除,從而得到二進位制數中1的個數

上個**:

#encoding=utf-8

import numpy as np

class solution(object):

def hammingweight(self, n):

""":type n: int

:rtype: int

"""ans = 0

while n > 0:

tmp = n - 1

n &= tmp

ans += 1

return ans

漢明距離理解與計算

漢明距離 是求兩個等長字串之間對應位置的不同字元的個數。也就是求將乙個字串變換成另乙個字串所需要替換字元的個數。1.有如下兩個字串 abcde abbdc 則這兩個字串的漢明距離為2,因為兩個字串的第三個和第五個位置的字元不同 2.12345 54321 同理這兩個字串的漢明距離為4,除了第三個字元...

位運算計算方式與例項

1.非 是乙個單目運算子,只有乙個運算物件。0變成1,1變成0。例如 二進位制1000 1101 進行位邏輯非運算為 0111 0010,對應十進位制 141等於 142。正數取反 對應的負數 1 負數取反 對應的正數 1 例如 14 15 14 13 2.與 將兩個物件按位與運算,1與1等於1,1...

語言 重量計算 計算機的起源與發展

17世紀,德國數學家萊布尼茨發明了二進位制,為計算機內部資料的表示方法創造了條件。20世紀初,電子技術得到了飛速發展,1904年英國電氣工程師弗萊明研製出真空二極體。1906年,美國科學家福雷斯特發明了真空三極體,為計算機的誕生奠定了基礎。1946年2月,美國的賓夕法尼亞大學研製出世界第一台計算機 ...