gpt4 book ai didi

java - 如何对带有位标志的整数执行 "indexOf"和 "lastIndexOf"操作? (获取找到的索引的*幂*)

转载 作者:行者123 更新时间:2023-12-01 23:01:59 25 4
gpt4 key购买 nike

这是我的 previous question on bit flags 的后续内容,我澄清了一些重大误解。

我需要创建这些函数来查找包含零个或多个标志的 int 中的单个位标志:

BitBinaryUtil
int twoExponentOfHighestOneBit(int all_flags)

int twoExponentOfHighestOneBitAtMost(int all_flags,
int twoExponentOfTwo_max0Thr30Incl)

int twoExponentOfLowestOneBit(int all_flags)

int twoExponentOfLowestOneBitAtLeast(int all_flags,
int twoExponentOfTwo_min0Thr30Incl)

String.indexOflastIndexOf 大致相似,只不过它们返回两个找到位的指数。例如(全部 31 位)

twoExponentOfHighestOneBit:
1000000000000000000000000000000 --> 30 (2^30=1073741824)
0000000000000000000000000000001 --> 0 (2^0=1)
0000000000000100000000000000001 --> 18
0000000000000000000000000000000 --> -1

twoExponentOfLowestOneBit:
1000000000000000000000000000000 --> 30
0000000000000000000000000000001 --> 0
0000000000000100000000000000001 --> 0

我该怎么做?

最佳答案

Integer 类有许多位函数,例如 Integer.highestOneBit 。对于迭代和位操作,BitSet 类也提供了很好的功能。但整数就可以了。

类似于:

int n = Integer.numberOfTrailingZeros(Integer.highestOneBit(x)) + 1;

关于java - 如何对带有位标志的整数执行 "indexOf"和 "lastIndexOf"操作? (获取找到的索引的*幂*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23278164/

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