📜  两个整数之间的汉明距离

📅  最后修改于: 2021-05-25 01:37:21             🧑  作者: Mango

给定两个整数,任务是找到两个整数之间的汉明距离。两个整数之间的汉明距离是两个数字在同一位置不同的位数。
例子:

Input: n1 = 9, n2 = 14
Output: 3
9 = 1001, 14 = 1110
No. of Different bits = 3

Input: n1 = 4, n2 = 8
Output: 2

方法:

  1. 计算两个数字的异或。
  2. 计算设置的位数。

下面是上述方法的实现:

C++
// C++ implementation of above approach
#include 
using namespace std;
 
// Function to calculate hamming distance
int hammingDistance(int n1, int n2)
{
    int x = n1 ^ n2;
    int setBits = 0;
 
    while (x > 0) {
        setBits += x & 1;
        x >>= 1;
    }
 
    return setBits;
}
 
// Driver code
int main()
{
    int n1 = 9, n2 = 14;
    cout << hammingDistance(9, 14) << endl;
 
    return 0;
}


Java
// Java implementation of above approach
class GFG
{
 
// Function to calculate hamming distance
static int hammingDistance(int n1, int n2)
{
    int x = n1 ^ n2;
    int setBits = 0;
 
    while (x > 0)
    {
        setBits += x & 1;
        x >>= 1;
    }
 
    return setBits;
}
 
// Driver code
public static void main(String[] args)
{
    int n1 = 9, n2 = 14;
    System.out.println(hammingDistance(n1, n2));
}
}
 
// This code is contributed by Bilal


Python3
# Python3 implementation of above approach
 
# Function to calculate hamming distance
def hammingDistance(n1, n2) :
 
    x = n1 ^ n2
    setBits = 0
 
    while (x > 0) :
        setBits += x & 1
        x >>= 1
     
    return setBits
 
if __name__=='__main__':
    n1 = 9
    n2 = 14
    print(hammingDistance(9, 14))
 
# this code is contributed by Smitha Dinesh Semwal


C#
// C# implementation of above approach
class GFG
{
 
// Function to calculate
// hamming distance
static int hammingDistance(int n1, int n2)
{
    int x = n1 ^ n2;
    int setBits = 0;
 
    while (x > 0)
    {
        setBits += x & 1;
        x >>= 1;
    }
 
    return setBits;
}
 
// Driver code
static void Main()
{
    int n1 = 9, n2 = 14;
    System.Console.WriteLine(hammingDistance(n1, n2));
}
}
 
// This code is contributed by mits


PHP
 0)
    {
        $setBits += $x & 1;
        $x >>= 1;
    }
 
    return $setBits;
}
 
// Driver code
$n1 = 9;
$n2 = 14;
echo(hammingDistance(9, 14));
 
// This code is contributed by Smitha
?>


Javascript


输出:
3

注意:可以使用__builtin_popcount()函数对设置的位数进行计数。