Module malachite_nz::natural::arithmetic::shr
source · [−]Expand description
Right-shifting a Natural
(dividing it by a power of 2).
shr
extern crate malachite_base;
use malachite_base::num::arithmetic::traits::Pow;
use malachite_base::num::basic::traits::Zero;
use malachite_nz::natural::Natural;
assert_eq!((Natural::ZERO >> 10u8), 0);
assert_eq!((Natural::from(492u32) >> 2u32), 123);
assert_eq!((Natural::from(10u32).pow(12) >> 10u64), 976562500);
assert_eq!((&Natural::ZERO >> 10u8), 0);
assert_eq!((&Natural::from(492u32) >> 2u32), 123);
assert_eq!((&Natural::from(10u32).pow(12) >> 10u64), 976562500);
assert_eq!((Natural::ZERO >> 10i8), 0);
assert_eq!((Natural::from(492u32) >> 2i16), 123);
assert_eq!((Natural::from(10u32).pow(12) >> 10i32), 976562500);
assert_eq!((Natural::ZERO >> -10i64), 0);
assert_eq!((Natural::from(123u32) >> -2i8), 492);
assert_eq!(
(Natural::from(123u32) >> -100i16).to_string(),
"155921023828072216384094494261248"
);
assert_eq!((&Natural::ZERO >> -10i8), 0);
assert_eq!((&Natural::from(123u32) >> -2i16), 492);
assert_eq!(
(&Natural::from(123u32) >> -100i32).to_string(),
"155921023828072216384094494261248"
);
assert_eq!((&Natural::ZERO >> 10i64), 0);
assert_eq!((&Natural::from(492u32) >> 2i8), 123);
assert_eq!((&Natural::from(10u32).pow(12) >> 10i16), 976562500);
shr_assign
extern crate malachite_base;
use malachite_base::num::basic::traits::One;
use malachite_nz::natural::Natural;
let mut x = Natural::from(1024u32);
x >>= 1u8;
x >>= 2u16;
x >>= 3u32;
x >>= 4u64;
assert_eq!(x, 1);
let mut x = Natural::ONE;
x >>= -1i8;
x >>= -2i16;
x >>= -3i32;
x >>= -4i64;
assert_eq!(x, 1024);
let mut x = Natural::from(1024u32);
x >>= 1i8;
x >>= 2i16;
x >>= 3i32;
x >>= 4i64;
assert_eq!(x, 1);