[英]How to add two BitSet
我正在寻找一种添加两个BitSet的方法。 我应该去了解二进制数的基础知识,然后对BitSet进行XOR
和AND
操作。 就像这里基本说的
这会有效吗?
不,这没有效率,因为在处理完N-1
所有位之前,您不会知道N
位的进位。 这是通过硬件中的进位超前加法器解决的问题。
没有一种方法可以实现在最坏的情况下不逐位检查所有位的方式来实现BitSet的添加。 替代策略在很大程度上取决于您的特定要求:如果您对位集进行大量更改,则可能需要根据
Sun的
Oracle实施来自己动手。 您可以
毫不客气地复制
借用他们的代码,并添加对以long[] bits
存储的BitSet
的“内容”进行操作的add
实现。 您需要非常小心地处理溢出(记住,Java中的所有数字都是带符号的),但是否则应该很简单。
最有效的方法是将两个位集都转换为数字,然后将它们相加
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.