Tag: 比特操纵

查找设置了某些位的long的所有组合

这是一个非常模糊的问题,我怀疑我必须在我的代码中以不同的级别进行…但希望Stack Overflow的蜂巢思维可以帮助…… 我有一个很长的,如果表示为二进制字符串将设置正好五位。 例如, long l = 341; // as a bit string, “101010101” 我正在寻找一个包含所有十个可能长度的数组,其中正好有三个这样的位。 继续这个例子, long[] results = { 101010000, 101000100, 101000001, 100010100, 100010001, 100000101, 1010100, 1010001, 1000101, 10101 } 以下是适当的方法签名: public long[] toThreeBitCombinations(long l) { // what goes here? } (问题领域是扑克;在奥马哈扑克手中列举所有可能的板卡组合。是的,还有其他方法可以解决这个问题,但我正在测试这种方法,因为处理比特比其他大多数替代方案快得多。)