Hamming Distance
The Hamming distance between two integers is the number of positions at which the corresponding bits are different.
Given two integers x and y, calculate the Hamming distance.
Note:
0 ≤ x, y < 231.
For Example:
|
|
提示 | 解題應用 |
---|---|
BitManipulation | XOR,AND |
Default:
|
|
解答思路:
如果要找出兩數在二進制中相異的部分有多少個,其實就只要直接將兩數做XOR就會是相差的部分了,剩下的只要算出做完XOR後共有多少個1在裡頭就大功告成了,而如果要計算二進制有多少個1出現,有一個小技巧是不斷的將”該數”與”該數-1”做AND直到0為止共做了多少次就會是有多少個1了,所以最後結合上述兩個流程就會是兩數在二進制中相異1的數量。
程式碼解說:
一開始將兩數XOR,這邊我們將x與y做XOR後再放回x中,接著就要計算剛才做完計算得到差異的部分共有多少個1,利用一迴圈不斷的將x與(x-1)做AND,直到x歸0為止,期間所做的次數就是最後1的數量,也就是兩數在二進制中相異部分的數量
|
|
完整程式碼:
|
|
總結:
要找出兩數在二進制中相異的部分有多少個,先直接將兩數做XOR就會是相差的部分,再來計算得到的差異部分在二進制中有多少個1,就是不斷的將”該數”與”該數-1”做AND直到0為止共做了多少次就會是兩數在二進制中相異1的數量。