BitSet向后显示值?

时间:2012-06-23 01:21:00

标签: java bitset

我已经设置了以下使用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 }.
如果我没有弄错的话,

15 in 2的补码写为00001111(1字节)。

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

1 个答案:

答案 0 :(得分:5)

引用BitSet的Java标准:

  

返回此位集的字符串表示形式。对于每个索引   哪个BitSet包含一个设置状态的位,即十进制   该索引的表示包含在结果中。这样的指数   按从低到高的顺序列出,以“,”(逗号分隔)分隔   和一个空间)并用牙箍包围,导致平常   一组整数的数学符号。

如上所述,订单是“从最低到最高”。这意味着首先是最低有效位(1位),最后有效位是最后一位。

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