how to find power of number in rust language like 2-raise-32
You can use pow
method of each number type to compute an integral power of an integer. e.g. 232 can be computed by 2u64.pow(32)
. Note that i32
or u32
cannot represent 232, So you have to use one of the bigger types.
A gotcha is you cannot write 2.pow(5)
because the type of 2
is not determined (can be u32
, u64
or other types). You have to specify number type by either using suffix like 2u32.pow(5)
or specifying the type of a variable let x: u32 = 5; x.pow(5)
.
I don't understand what you mean (because I'm not good at English), but if you want log_2(32)
, then you can use u64::leading_zeros()
.
fn main() {
let log2_32 = (64 - 1) - 32u64.leading_zeros();
println!("log_2 32 = {}", log2_32); // => 5
let log2_100 = (64 - 1) - 100u64.leading_zeros();
println!("log_2 100 = {}", log2_100); // => 6
}
If you want to round up the result, use u64::next_power_of_two()
and then use .leading_zeros()
.
fn main() {
let log2_32 = (64 - 1) - 32u64.next_power_of_two().leading_zeros();
println!("ceil(log_2 32) = {}", log2_32); // => 5
let log2_100 = (64 - 1) - 100u64.next_power_of_two().leading_zeros();
println!("ceil(log_2 100) = {}", log2_100); // => 7
}
I'll add that if you're explicitly looking for a power of two, you can just use the bit shift operator 1 << 32
.
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.