如何将数字加幂?

时间:2018-07-06 10:46:42

标签: rust operators exponentiation

我试图使用插入号运算符(^)将整数提高到幂,但是得到的结果却令人惊讶,例如:

assert_eq!(2^10, 8);

在DuckDuckGo和Google上的搜索没有显示任何相关信息。

如何在Rust中执行求幂运算?

5 个答案:

答案 0 :(得分:10)

插入符^不用于求幂,它是bitwise XOR operator

Rust通过powchecked_pow方法提供幂运算,以防止溢出。

因此,将2提高到10的幂,请执行以下操作:

let base: i32 = 2; // an explicit type is required
assert_eq!(base.pow(10), 1024);

答案 1 :(得分:6)

这是您可以使用的最简单的方法:

snapcraft upload --release=stable updatelearning_xxx_amd64.snap

它将输出“2的10次方”,即:

<块引用>

1024

答案 2 :(得分:2)

对于整数:

fn main() {
   let n = u32::pow(2, 10);
   println!("{}", n == 1024);
}

对于浮动:

fn main() {
   // example 1
   let f = f32::powf(2.0, 10.0);
   // example 2
   let g = f32::powi(2.0, 10);
   // print
   println!("{}", f == 1024.0 && g == 1024.0);
}

或者,因为你的基数是 2,你也可以使用 shift:

fn main() {
   let n = 2 << 9;
   println!("{}", n == 1024);
}

答案 3 :(得分:1)

我正在尝试与 OP 相同的事情。感谢其他答案作者。

这里有一个对我有用的变体:

let n = 2u32.pow(10);

这使用 literal unsigned 32 bit integer 来设置类型和基数,然后在其上调用 pow() 函数。

答案 4 :(得分:0)

位移位是处理这种特殊情况的好方法:

assert_eq!(1 << 10, 1024);