在无符号整数中查找某些位模式

达伦

我正在复习考试,但有一个练习题,我一直在坚持。

我需要写函数 find_sequence(unsigned int num, unsigned int patter) {}.

我试过比较num & (pattern << i) == (pattern << i)和其他类似的东西,但它一直说有一种模式,但没有。我明白它为什么这样做,但我无法修复它。

num我使用的是unsigned int a = 82937和我在寻找模式unsigned int b = 0x05

Pattern:         00000000000000000000000000000101
Original bitmap: 00000000000000010100001111111001

到目前为止的代码:

int find_sequence(unsigned int num, unsigned int pattern)
{
        for (int i=0; i<32; i++)
        {
                if ((num & (pattern << i)) == (pattern << i))
                {
                        return i;
                }
        }

        return -9999;
}

int
main()
{
    unsigned int a = 82937;
    unsigned int b = 0x05;

    printf("Pattern: ");
    printBits(b);
    printf("\n");

    printf("Original bitmap: ");
    printBits(a);
    printf("\n");

    int test = find_sequence(a, b);
    printf("%d\n", test);

    return 0;
}

这是我到目前为止所拥有的。这不断返回 3,我明白为什么,但我不知道如何避免它。

维拉纳雷

在这种情况下,您可以制作一个位掩码,将所有不需要的空格都设为 0,因此在这种情况下

模式:00000000000000000000000000000101

位掩码:00000000000000000000000000000111

所以在你正在查看的数字的情况下

原文:00000000000000010100001111111001

如果你和那个用这个位掩码结束

&之后的数字:00000000000000000000000000000001

并将新数字与您的模式进行比较,看看是否相等。

然后>>原号

原文:00000000000000010100001111111001

右移:00000000000000001010000111111100

并重复 & 并比较以检查序列中的下 3 个数字。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Clojure中的无符号16位整数

来自分类Dev

获取无符号整数中位的整数值

来自分类Dev

如何在python中获取16位无符号整数

来自分类Dev

Clojure无符号64位整数

来自分类Dev

以无符号16位整数存储RGB

来自分类Dev

无符号整数a = -1的位表示形式

来自分类Dev

设置无符号整数的第n位

来自分类Dev

无符号8位整数的左移运算

来自分类Dev

以无符号16位整数存储RGB

来自分类Dev

使用go lang中的bitshift从32位无符号整数中获取位

来自分类Dev

C中的有符号和无符号整数的按位非

来自分类Dev

将无符号整数中的位设置为两位之间最快的功能

来自分类Dev

32位无符号整数的2位右移

来自分类Dev

在C#中从BitArray转换为16位无符号整数

来自分类Dev

如何集体检查是否在无符号整数中设置了位?

来自分类Dev

如何直接在numpy数据类型中为16位无符号整数指定尾数?

来自分类Dev

如何在C ++中采用输入128位无符号整数

来自分类Dev

无符号32位整数在SSE中的水平最小值和位置

来自分类Dev

您可以在Arduino(C / C ++)中制作128位无符号整数吗?

来自分类Dev

SQL查询中的大无符号整数(> 1024bit)的按位运算符

来自分类Dev

16位无符号整数数组,输出的元素多于c中的初始化大小

来自分类Dev

在C#中从BitArray转换为16位无符号整数

来自分类Dev

如何直接在numpy数据类型中为16位无符号整数指定尾数?

来自分类Dev

将负整数值存储在无符号位中并从中减去

来自分类Dev

如何在C ++中采用输入128位无符号整数

来自分类Dev

计算无符号64位整数中的零半字节数

来自分类Dev

如何在 JavaScript 中创建大小为 128 位的无符号整数数组?

来自分类Dev

如何将 16 位无符号整数转换为 8 位无符号字符并最终返回无符号字符*?

来自分类Dev

C中的无符号位长移位

Related 相关文章

  1. 1

    Clojure中的无符号16位整数

  2. 2

    获取无符号整数中位的整数值

  3. 3

    如何在python中获取16位无符号整数

  4. 4

    Clojure无符号64位整数

  5. 5

    以无符号16位整数存储RGB

  6. 6

    无符号整数a = -1的位表示形式

  7. 7

    设置无符号整数的第n位

  8. 8

    无符号8位整数的左移运算

  9. 9

    以无符号16位整数存储RGB

  10. 10

    使用go lang中的bitshift从32位无符号整数中获取位

  11. 11

    C中的有符号和无符号整数的按位非

  12. 12

    将无符号整数中的位设置为两位之间最快的功能

  13. 13

    32位无符号整数的2位右移

  14. 14

    在C#中从BitArray转换为16位无符号整数

  15. 15

    如何集体检查是否在无符号整数中设置了位?

  16. 16

    如何直接在numpy数据类型中为16位无符号整数指定尾数?

  17. 17

    如何在C ++中采用输入128位无符号整数

  18. 18

    无符号32位整数在SSE中的水平最小值和位置

  19. 19

    您可以在Arduino(C / C ++)中制作128位无符号整数吗?

  20. 20

    SQL查询中的大无符号整数(> 1024bit)的按位运算符

  21. 21

    16位无符号整数数组,输出的元素多于c中的初始化大小

  22. 22

    在C#中从BitArray转换为16位无符号整数

  23. 23

    如何直接在numpy数据类型中为16位无符号整数指定尾数?

  24. 24

    将负整数值存储在无符号位中并从中减去

  25. 25

    如何在C ++中采用输入128位无符号整数

  26. 26

    计算无符号64位整数中的零半字节数

  27. 27

    如何在 JavaScript 中创建大小为 128 位的无符号整数数组?

  28. 28

    如何将 16 位无符号整数转换为 8 位无符号字符并最终返回无符号字符*?

  29. 29

    C中的无符号位长移位

热门标签

归档