如何在 Rust 中将整数转换为二进制,以便可以迭代数字?

lup*_*nx2 3 binary rust

我正在尝试将 Rust 中的十进制 i32 转换为我可以操作的二进制表示形式,我从这个问题中了解到,我可以在二进制格式之间打印和声明 i32 值;但我正在尝试使用逻辑运算符实现二进制除法(而不是仅使用标准 i32 数学运算符,这是针对 leetcode 问题)并且我对 Rust 语法不够熟悉,无法理解如何使用i32 实现的二进制特征,或者是否有我应该使用的专用二进制类型或迭代器。

在写这个问题时,我能够通过使用 String 类型找到一个可行的解决方案,如下所示:

fn main() {
    let a : i32 = 5;
    let bin_a = String::from(format!("{a:b}"));
    let bin_s = String::from("101");

    assert_eq!(bin_a, bin_s);
}
Run Code Online (Sandbox Code Playgroud)

但这感觉很笨拙,就像可能有一种更直接的方法来迭代数字的二进制表示形式,所以我将提交这个问题,希望更有知识的人能够做出贡献;预先感谢您的任何帮助。

Jmb*_*Jmb 7

基本操作:

  • (x >> n) & 1给你第nth 位,
  • x & !(1 << n)清除第nth 位,
  • x | (1 << n)设置第nth 位。

因此,迭代数字就像(0..32).map (|n| (x >> n) & 1)从最低有效位到最高有效位或(0..32).rev().map (|n| (x >> n) & 1)从最高有效位到最低有效位一样简单。