给定两个整数,任务是找到两个整数之间的汉明距离。两个整数之间的汉明距离是两个数字中相同位置的位数不同。
例子:
Input: n1 = 9, n2 = 14
Output: 3
9 = 1001, 14 = 1110
No. of Different bits = 3
Input: n1 = 4, n2 = 8
Output: 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()函数对设置的位数进行计数。