4

我已经设置了以下使用 Java 运行的代码:

BitSet bitSet = BitSet.valueOf(new byte[] { (byte)15 });
System.out.println(bitSet);

令我惊讶的是

{0, 1, 2, 3} //the indexes of the 1's in the bitset

代替

{ 4, 5, 6, 7 }.

如果我没记错的话,2 的补码中的 15 写为 00001111(有 1 个字节)。

这让我想知道为什么 BitSet 会向后显示索引。有什么合理的解释吗?

4

1 回答 1

5

引用 Java 标准BitSet

返回此位集的字符串表示形式。对于此 BitSet 包含处于设置状态的位的每个索引,该索引的十进制表示包含在结果中。此类索引按从低到高的顺序列出,用“、”(逗号和空格)分隔并用大括号括起来,从而形成一组整数的常用数学符号。

正如这所说,顺序是“从最低到最高”。这意味着最低有效位(个位)在前,最高有效位在后。

排序(从左到右的符号顺序或从最少到最多的数字顺序)都是有意义的,尽管方式不同。

于 2012-06-23T01:23:20.537 回答