Python的二進位制數位運算,計算漢明距離(Hamming Distance)為例
Python的二進位制數操作,計算漢明距離(Hamming Distance)為例
最近發現了LeetCode這個好網站,做了幾道題,今後刷LeetCode學習到的新知識我都儘量抽時間記錄下來,同時分享給大家。
今天就從LC上一道題說起:
Given two integers x and y, calculate the Hamming distance.
Hamming distance:
- 中文為漢明距離,它表示兩個(相同長度)字對應位不同的數量,我們以d(x,y)表示兩個字x,y之間的漢明距離。對兩個字串進行異或運算,並統計結果為1的個數,那麼這個數就是漢明距離。
先把我自己的答案貼上來:
class Solution(object):
def hammingDistance(self, x, y):
"""
:type x: int
:type y: int
:rtype: int
"""
hamming_distance = 0
s = str(bin(x^y))
for i in range(2,len(s)):
if int(s[i]) is 1:
hamming_distance += 1
return hamming_distance
其中python內建函式 bin() 的作用是將輸入的十進位制數,轉換成二進位制,但需要注意的是這個二進位制輸出是一個str型別:
python中使用0b字元作為字首表示二進位制數,用0b表示的二進位制數同樣可以進行任何操作,比如加減乘除。
接下來就是羅列一下python中的位運算子:
1,與運算(&、and)
規則: 0&0=0; 0&1=0; 1&0=0; 1&1=1;
例子: 1 & 4
0001
&
0100
=
0000
因此:1 & 4 = 0
2,或運算( | 、or)
規則: 0|0=0; 0|1=1; 1|0=1; 1|1=1;
例子: 1 | 4
0001
|
0100
=
0101
因此:1 | 4 = 5
3,異或運算( ^ )
規則: 0^0=0; 0^1=1; 1^0=1; 1^1=0;
例子: 1 ^ 4
0001
^
0100
=
0101
因此:1 ^ 4 = 5
4,取反運算( ~ )
規則: ~1=0; ~0=1;
例子: 5 & ~1
0101
&
1110
=
0100
因此:5 & ~1 = 4,實現使最低位為零
5,右移運算( >> )
規則: 將一個數的各二進位制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。
例子: a = a >> 2
將a的二進位制位右移2位
每右移一位,相當於該數除以2。
6,左移運算( << )
規則: 將一個數的各二進位制位全部左移若干位,右邊補0,左邊二進位制位丟棄。
例子: a = a << 2
將a的二進位制位左移2位,右補0
每左移一位,相當於該數乘以2。
相關推薦
Python的二進位制數位運算,計算漢明距離(Hamming Distance)為例
Python的二進位制數操作,計算漢明距離(Hamming Distance)為例 最近發現了LeetCode這個好網站,做了幾道題,今後刷LeetCode學習到的新知識我都儘量抽時間記錄下來,同時分享給大家。 今天就從LC上一道題說起: Giv
opencv:L1距離,L2距離,顏色失真(color distortion),漢明距離(hamming distance),LUT
#pragma once #include <opencv2/core/types_c.h> //! computes the L1 distance between two integer values template<typename T>
(java)leetcode461 漢明距離( Hamming Distance)
題目描述: 兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。(漢明距離是使用在資料傳輸差錯控制編碼裡面的,漢明距離是一個概念,它表示兩個(相同長度)字對應位不同的數量,我們以d(x,y)表示兩個字x,y之間的漢明距離。對兩個字串進行異或運算,並統計結果為1的個數,那麼這
leetcode461 漢明距離( Hamming Distance)
題目描述: 兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。(漢明距離是使用在資料傳輸差錯控制編碼裡面的,漢明距離是一個概念,它表示兩個(相同長度)字對應位不同的數量,我們以d(x,y)表示兩個字x,y之間的漢明距離。對兩個字串進行異或運算,並統計結果
461.漢明距離(c++實現)
問題描述: 兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。 給出兩個整數 x 和 y,計算它們之間的漢明距離。 注意:0 ≤ x, y < 231. 示例: 輸入: x = 1, y = 4 輸出: 2
leetcode_461. Hamming Distance 計算漢明距離,按位異或運算,計算整數的二進位制表示中1的個數 java
題目: The Hamming distance between two integers is the number of positions at which the corresponding bits are different. Given two int
python+opencv 計算圖片的感知hash值,來計算漢明距離,簡單的找相似圖片
感知雜湊演算法是一類演算法的總稱,包括aHash、pHash、dHash。顧名思義,感知雜湊不是以嚴格的方式計算Hash值,而是以更加相對的方式計算雜湊值,因為“相似”與否,就是一種相對的判定。 aHash:平均值雜湊。速度比較快,但是常常不太精確。 pHash:感知雜湊
python 漢明距離運算
兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。示例:輸入: x = 1, y = 4 輸出: 2 解釋: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭
[Leetcode,python] Hamming Distance 漢明距離
問題描述: The Hamming distance between two integers is the number of positions at which the correspondin
筆記-python-實用-程序運算時間計算
time 結束 start tar 包含 筆記 long star int 方法1 import datetime starttime = datetime.datetime.now() #long running endtime = datetime.datetime.n
漢明距離的計算
漢明距離,作為一種衡量特徵距離的計算方法,在很多場合都有應用,其主要思想是找到兩個特徵之間的差異大小,也可以說是相似性。 我是在影象處理中用到的,專案中需要計算影象梯度方向,我選擇了四個方向,這樣就可以用二位二進位制表示,分別為 0,1,2,3,也就是 00,01,10,11,這四種情況。這樣,我
leetcode 461. 漢明距離【Easy】【位運算】
題目: 兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。 給出兩個整數 x 和 y,計算它們之間的漢明距離。 注意: 0 ≤ x, y < 231. 示例: 輸入: x = 1, y = 4
python 刷LeetCode 之 【漢明距離】
class Solution: def hammingDistance(x, y): """ :type x: int :type y: int :rtype: int """ # 相當於
python第九章,計算生態概念
1,從資料處理到人工智慧。 資料表示 ->資料清洗->資料統計->資料視覺化->資料探勘->人工智慧 資料表示:採用合適方式用程式表達資料。 資料清理:資料歸一化,資料轉換,異常值處理。 資料統計:資料的概要理解,數量。分佈。中位數等。
百度之星程式設計大賽的資格賽 1001調查問卷(用二進位制位運算,暴力列舉想要的那幾個位置上的數)
Problem Description 度度熊為了完成畢業論文,需要收集一些資料來支撐他的論據,於是設計了一份包含 mm 個問題的調查問卷,每個問題只有 'A' 和 'B' 兩種選項。 將問卷散發出去之後,度度熊收到了 nn 份互不相同的問卷,在整理結果的時候,他發現可以
leetcode 刷題(python)之漢明距離
兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。注意:0 ≤ x, y < 231.示例:輸入: x = 1, y = 4輸出: 2解釋:1 (0 0 0 1)4 (0 1 0 0)↑ ↑上面的箭頭
python leetcode461 漢明距離
one day a cannon or one week five cannons leetcode 461 hamming distance (Source) The Hamming distance between two integers is the nu
兩個整數對應的二進位制漢明距離----hamming distance
漢明距離,就是兩個數對應的二進位制數不相同的位數的個數例如:1---001,4---100,有兩個不相同的位數,所以漢明距離為2分為兩個步驟1.求出不相同的位數是哪些位,異或^,x^y,求出的結果為1的位數即為不相同的位數2求出為1的位數有幾位,可以採用以下思路將異或後的結果
演算法練習筆記(十七)——漢明距離的計算
漢明距離指的是兩個數字在二進位制的情況之下,相互轉化要經過幾位的變換 題目地址:https://leetcode.com/problems/total-hamming-distance/#/description 題目:Total Hamming Distance 描述:
python 獲取毫秒數,計算呼叫時長
如題:在python的函式呼叫中需要記錄時間,下面是記錄毫秒時間的方法。 import datetime import time t1 = datetime.datetime.now().microsecond t3 = time.mktime(datetime.datet