Java位到整数

时间:2017-03-30 21:24:33

标签: java byte bits

我有一个应用程序,它从0发送给我2个增量 - >> 32 - > 48 - > 16然后回到0,第二个增加,每次第一个点击0.第二个上升到最大值65535然后循环回到0.我猜测这是一些编码的位,可以是为了创建一个数字?

如果将这两个短片组合成一个数字,如果它们按上述行为递增,则该数字会增加1?

1 个答案:

答案 0 :(得分:0)

0b0000_0000  0
0b0010_0000 32
0b0011_0000 48
0b0001_0000 16

所以你可以递增一个模4,0,1,2,3,0,1,2 ......的计数器并切换这两位。模4意味着& 0b11

int x = 0;
for (int i = 0; i < 100; ++i) {
    System.out.printf("%04x%n", x);
    x = (x + 1) & 0xFFFF;
    x |= (x & 2) << 16;
    x |= ~((x & 2) ^ (x & 1)) << 17; // Or something like that
}

我留给你找到逻辑。