Read/write 位长

Read/write bits of a long

我正在尝试使用带符号的 long 作为 1 和 0 的数组。我需要能够分配一个 long 中的任何位,或读取一个 long 中的任何位。我一直卡住,因为我似乎无法在不弄乱其余位的情况下读取或写入符号位(由于二进制补码)。我可以使用布尔数组来表示 1 和 0,但这会占用太多内存。有谁知道一种长时间单独读写任何位的方法?或者任何人都可以建议一个超级内存高效的替代方案吗?

对于这个问题,BitSet 是合适的库class。在内部,它是使用 long 实现的,如果需要,它会增长到使用 BigInteger。有关详细信息,请阅读 javadoc.

online java ide 中的一些示例代码演示了 BitSet 的使用。

https://www.codiva.io/p/f6f0ee80-2ad3-4fb6-a197-aa1e549fba80