Trait curv::arithmetic::traits::BitManipulation
source · pub trait BitManipulation {
fn set_bit(&mut self, bit: usize, bit_val: bool);
fn test_bit(&self, bit: usize) -> bool;
fn bit_length(&self) -> usize;
}
Expand description
Bits manipulation in BigInt
Required Methods§
sourcefn set_bit(&mut self, bit: usize, bit_val: bool)
fn set_bit(&mut self, bit: usize, bit_val: bool)
Sets/unsets bit in the number
Example
let mut n = BigInt::from(0b100);
n.set_bit(3, true);
assert_eq!(n, BigInt::from(0b1100));
n.set_bit(0, true);
assert_eq!(n, BigInt::from(0b1101));
n.set_bit(2, false);
assert_eq!(n, BigInt::from(0b1001));
sourcefn test_bit(&self, bit: usize) -> bool
fn test_bit(&self, bit: usize) -> bool
Tests if bit is set
let n = BigInt::from(0b101);
assert_eq!(n.test_bit(3), false);
assert_eq!(n.test_bit(2), true);
assert_eq!(n.test_bit(1), false);
assert_eq!(n.test_bit(0), true);
sourcefn bit_length(&self) -> usize
fn bit_length(&self) -> usize
Length of the number in bits
assert_eq!(BigInt::from(0b1011).bit_length(), 4);