#bit #combination #iterator #unsigned-integer #integer-value

bit_combi_iter

一个迭代器,用于迭代小于给定无符号整数的所有比特组合

4 个版本 (稳定)

1.0.2 2021 年 9 月 15 日
1.0.1 2021 年 9 月 8 日
1.0.0 2021 年 9 月 7 日
0.1.0 2021 年 9 月 7 日

944算法

MIT 许可协议

12KB
142

bit_combi_iter

crates.io CI

bit_combi_iter 是一个小型无依赖的 crate,用于枚举小于给定无符号整数值的所有比特组合,保持位中的 1

use bit_combi_iter::BitCombinations;

fn main() {
    let u = 0b00010100u8;

    let mut c = BitCombinations::new(u);

    println!("{:#b}", c.next().unwrap()); // => 0b00010010
    println!("{:#b}", c.next().unwrap()); // => 0b00010001
    println!("{:#b}", c.next().unwrap()); // => 0b00001100
    println!("{:#b}", c.next().unwrap()); // => 0b00001010
    println!("{:#b}", c.next().unwrap()); // => 0b00001001
    println!("{:#b}", c.next().unwrap()); // => 0b00000110
    println!("{:#b}", c.next().unwrap()); // => 0b00000101
    println!("{:#b}", c.next().unwrap()); // => 0b00000011
    println!("{}", c.next().is_none()); // => true
}

当您想要枚举包括 k 个 1 的 n 位整数时,此 crate 非常有用。

// Enumerate all 5 bit integers including 3 ones (as u8)
BitCombinations::new(0b11100u8)
// 11100
// 11010
// 11001
// 10110
// 10101
// ...

安装

将此 crate 添加到 Cargo.toml 中的依赖项。

[dependencies]
bit_combi_iter = "1"

文档

请参阅 API 文档

特别感谢

算法是从 博客文章 中借用的,作者是 @herumi

许可协议

MIT 许可协议 下分发。

无运行时依赖