刷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月,美國的賓夕法尼亞大學研製出世界第一台計算機 ...