Java 读/写长数据的位

Java 读/写长数据的位,java,bit-manipulation,long-integer,twos-complement,Java,Bit Manipulation,Long Integer,Twos Complement,我正在尝试将带符号的long用作1和0的数组。我需要能够在长时间内分配任何位,或在长时间内读取任何位。我一直被卡住,因为我似乎无法读取或写入符号位而不弄乱其余的位(由于二的补码)。我可以使用布尔数组来表示1和0,但这会占用太多内存。有人知道一种在长时间内对任何一位进行单独读写的方法吗?或者有人能推荐一个超级高效的替代方案吗?对于这个问题,BitSet是合适的库类。在内部,它是使用long实现的,如果需要,可以使用biginger。有关更多信息,请阅读 演示位集使用的一些示例代码 您需要更具体地说

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

对于这个问题,BitSet是合适的库类。在内部,它是使用long实现的,如果需要,可以使用biginger。有关更多信息,请阅读

演示位集使用的一些示例代码


您需要更具体地说明您遇到的困难。对于一个有效的替代方案,请看Java的。使用前面评论中建议的位集类。读/写符号位是绝对正确的,它不会把任何事情弄糟。2的补码不重要。当然,如果您设置符号,您应该期望值被打印为负数,但这不会影响实际位。