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

📅  最后修改于: 2021-05-07 01:45:16             🧑  作者: 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
?>


输出:
3

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