gpt4 book ai didi

java - 二进制分隔距离 (Java)

转载 作者:行者123 更新时间:2023-12-02 05:14:31 28 4
gpt4 key购买 nike

我的目标是获取两个数字并查看它们之间的位数差异。

例如:

号码A:01011 0111

号码B:11011 0101

这两个数字之间的差值为 2,因为有两个位不同。有没有简单的方法可以完成这个计算,而无需使用一些大算法来分解这两个数字?

最佳答案

从 0 循环到您想要检查的位数(我将选择 32),按当前“位索引”对两个数字进行位移,如果按位 AND 1 则增加差值计数(获取第一位)两个数字不同。

public static int difference(int num1, int num2) {
int count = 0;
for (int i = 0; i < 32; i++) {
if (((num1 >> i) & 1) != ((num2 >> i) & 1)) count++;
}
return count;
}

示例:

difference(0b010110111, 0b110110101); // result: 2

要查看的位数取决于您的数据类型:

  • - 64 位
  • int - 32 位
  • - 16 位
  • 字节 - 8 位

关于java - 二进制分隔距离 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27081124/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com