简单快速的方法来计算二进制整数到0的汉明距离?

马尔贾姆

我正在编写Sudoku求解器,我必须计算出我学到的称为intto0的汉明距离,例如to 7111以二进制形式)的汉明距离0is 3所以我只是做:

for(int dist = 0 ; num != 0 ; num>>=1) dist += (num&1);

尽管效果很好,但我觉得它有点笨拙。我试图提出一个二进制运算技巧来计算距离(主要是为了好玩),但是我只能找到一种适用于距离为的方法1

(num-1) ^ ((num<<1)-1) == num → true only if hamming dist to 0 == 1

我查看了StackOverflow和网上的内容,但找不到任何东西。

假设num从来没有否定,总是小于512,有没有对其进行评估,或许某些二元运算技巧一个更好/更优雅的方式?如果不是这样,则根据上述假设,海明距离是否始终在误差范围内< 1

古斯特夫

在Java中,您可以使用静态方法Integer.bitCount(int i)

如果您需要另一种语言的帮助,那么这是java源代码,应该可以毫不费力地进行翻译。

/**
 * Returns the number of one-bits in the two's complement binary
 * representation of the specified {@code int} value.  This function is
 * sometimes referred to as the <i>population count</i>.
 *
 * @param i the value whose bits are to be counted
 * @return the number of one-bits in the two's complement binary
 *     representation of the specified {@code int} value.
 * @since 1.5
 */
public static int bitCount(int i) {
    // HD, Figure 5-2
    i = i - ((i >>> 1) & 0x55555555);
    i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
    i = (i + (i >>> 4)) & 0x0f0f0f0f;
    i = i + (i >>> 8);
    i = i + (i >>> 16);
    return i & 0x3f;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我应该如何存储和计算二进制代码之间的汉明距离?

来自分类Dev

用C语言计算8位二进制值的汉明距离

来自分类Dev

快速紧凑的方法来检查向量是否为二进制

来自分类Dev

LSH是关于将向量转换为汉明距离的二进制向量吗?

来自分类Dev

LSH是关于将向量转换为汉明距离的二进制向量吗?

来自分类Dev

C/C++ 方法中最快/最短的方法来计算二进制中的数字总和/也就是二进制中的 1 数

来自分类Dev

快速计算汉明距离

来自分类Dev

两个二进制字符串之间的汉明距离不起作用

来自分类Dev

二进制中的两个字符串的汉明距离不正确

来自分类Dev

(速度挑战)根据通用汉明距离,有没有更快的方法来计算距离矩阵?

来自分类Dev

实数到二进制数 (0/1)

来自分类Dev

用相同的汉明权重计算二进制数的所有排列的最快算法是什么?

来自分类Dev

什么是最快的方法来计数二进制文件中的设置位数

来自分类Dev

什么是最快的方法来计数二进制文件中的设置位数

来自分类Dev

快速计算二进制numpy数组的质心

来自分类Dev

将整数列表写入二进制文件的最简单方法是什么?

来自分类Dev

找到一个二进制矩阵,使给定的汉明权重不变

来自分类Dev

计算整数的二进制表示形式

来自分类Dev

有没有更快的方法来读取,诉诸和转换二进制文件?

来自分类Dev

负整数到有符号32位二进制数

来自分类Dev

基于raw_input的整数到二进制程序

来自分类Dev

使用整数到二进制转换获取错误列表

来自分类Dev

用用户输入填充2D数组(整数到二进制)

来自分类Dev

我的 C 函数没有返回正确的整数到二进制值

来自分类Dev

节点js,如何写入/读取整数到二进制文件?

来自分类Dev

Windows 10计算器来计算二进制表示形式的二进制补码值

来自分类Dev

十进制数到以二进制/二进制数为首的布尔数组

来自分类Dev

简单的setuid二进制开发

来自分类Dev

简单的二进制替换

Related 相关文章

  1. 1

    我应该如何存储和计算二进制代码之间的汉明距离?

  2. 2

    用C语言计算8位二进制值的汉明距离

  3. 3

    快速紧凑的方法来检查向量是否为二进制

  4. 4

    LSH是关于将向量转换为汉明距离的二进制向量吗?

  5. 5

    LSH是关于将向量转换为汉明距离的二进制向量吗?

  6. 6

    C/C++ 方法中最快/最短的方法来计算二进制中的数字总和/也就是二进制中的 1 数

  7. 7

    快速计算汉明距离

  8. 8

    两个二进制字符串之间的汉明距离不起作用

  9. 9

    二进制中的两个字符串的汉明距离不正确

  10. 10

    (速度挑战)根据通用汉明距离,有没有更快的方法来计算距离矩阵?

  11. 11

    实数到二进制数 (0/1)

  12. 12

    用相同的汉明权重计算二进制数的所有排列的最快算法是什么?

  13. 13

    什么是最快的方法来计数二进制文件中的设置位数

  14. 14

    什么是最快的方法来计数二进制文件中的设置位数

  15. 15

    快速计算二进制numpy数组的质心

  16. 16

    将整数列表写入二进制文件的最简单方法是什么?

  17. 17

    找到一个二进制矩阵,使给定的汉明权重不变

  18. 18

    计算整数的二进制表示形式

  19. 19

    有没有更快的方法来读取,诉诸和转换二进制文件?

  20. 20

    负整数到有符号32位二进制数

  21. 21

    基于raw_input的整数到二进制程序

  22. 22

    使用整数到二进制转换获取错误列表

  23. 23

    用用户输入填充2D数组(整数到二进制)

  24. 24

    我的 C 函数没有返回正确的整数到二进制值

  25. 25

    节点js,如何写入/读取整数到二进制文件?

  26. 26

    Windows 10计算器来计算二进制表示形式的二进制补码值

  27. 27

    十进制数到以二进制/二进制数为首的布尔数组

  28. 28

    简单的setuid二进制开发

  29. 29

    简单的二进制替换

热门标签

归档