gpt4 book ai didi

Java 查找 Long 的集合位

转载 作者:行者123 更新时间:2023-11-30 04:48:27 25 4
gpt4 key购买 nike

我有一个很长的号码。现在我想要的是以下(以伪代码给出),

for each two bits of that long

if the two bits == 11

then count++

(for example if number is "11 01 10 00 11" it will give count = 2)

任何人都可以帮助我如何在 Java 中有效地完成此操作吗?

最佳答案

public static int count11(long n) {
int cnt = 0;
while (n != 0) {
if ((n & 3) == 3) cnt++;
n >>>= 2;
}
return cnt;
}

更高效的变体:

public static int count11(long n) {
int cnt = 0;
while (n != 0) {
switch ((int)(n & 0x3F)) {
case 0x3F: cnt += 3; break;
case 0x3C: case 0x33: case 0xF: cnt += 2; break;
case 0x30: case 0xC: case 3: cnt++;
}
n >>>= 6;
}
return cnt;
}

关于Java 查找 Long 的集合位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367077/

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