Java - BitSet 为整数
Java - BitSet to integer
因此,以投票最多的 answer 作为基础,我尝试创建一个 BitSet 并将其位设置为数字 478 (111011110),因此我执行了以下操作:
BitSet set = new BitSet();
set.set(0, true);
set.set(1, true);
set.set(2, true);
set.set(3, false);
set.set(4, true);
set.set(5, true);
set.set(6, true);
set.set(7, true);
set.set(8, false);
System.out.println(bitSetToInt(set));
借助以下方法:
public static int bitSetToInt(BitSet bitSet) {
int bitInteger = 0;
for (int i = 0; i < 32; i++){
if (bitSet.get(i)) {
bitInteger |= (1 << i);
}
}
return bitInteger;
}
所以虽然我期望从这个电话中得到 478,但我得到了 247。有人能解释一下这是怎么回事吗?
第 0 位是最小位 (1<<0)。您已打开位 0、1、2、4、5、6 和 7。因此您的数字是 011110111
,即 247。
因此,以投票最多的 answer 作为基础,我尝试创建一个 BitSet 并将其位设置为数字 478 (111011110),因此我执行了以下操作:
BitSet set = new BitSet();
set.set(0, true);
set.set(1, true);
set.set(2, true);
set.set(3, false);
set.set(4, true);
set.set(5, true);
set.set(6, true);
set.set(7, true);
set.set(8, false);
System.out.println(bitSetToInt(set));
借助以下方法:
public static int bitSetToInt(BitSet bitSet) {
int bitInteger = 0;
for (int i = 0; i < 32; i++){
if (bitSet.get(i)) {
bitInteger |= (1 << i);
}
}
return bitInteger;
}
所以虽然我期望从这个电话中得到 478,但我得到了 247。有人能解释一下这是怎么回事吗?
第 0 位是最小位 (1<<0)。您已打开位 0、1、2、4、5、6 和 7。因此您的数字是 011110111
,即 247。