我正在用Java编程一个国际象棋引擎,我想在一个名为位图或位板的变量中表示所有棋子的位置。在C++中,我会简单地使用unsigned long,或者所谓的uint64_t。但是因为Java中没有无符号变量(据我所知),有什么有效的方法,如何实现这个方法?我试了所有我能想到的方法
whhtz7ly1#
实际上,有符号性与使用数字作为位掩码并没有显著的区别--至少在Java中没有。您可以很好地使用long,即使它是签名的。1L << 63工作。请注意,当向右移动遮罩时,您需要使用>>>而不是>>。请注意,如果您想存储超过64位的数据,您可能希望使用java.util.BitSet,它是专门设计为根据需要缩放的位图。
long
1L << 63
>>>
>>
java.util.BitSet
1条答案
按热度按时间whhtz7ly1#
实际上,有符号性与使用数字作为位掩码并没有显著的区别--至少在Java中没有。
您可以很好地使用
long
,即使它是签名的。1L << 63
工作。请注意,当向右移动遮罩时,您需要使用>>>
而不是>>
。请注意,如果您想存储超过64位的数据,您可能希望使用
java.util.BitSet
,它是专门设计为根据需要缩放的位图。