Сдвиг битов целого в Rust
Сдвиг влево умножает на степень двойки,
сдвиг вправо делит на степень двойки с
отбросом остатка. Знаки << и >>
принимают число и сколько разрядов сдвинуть.
В этом разделе берем только беззнаковый
тип.
Пустые места после сдвига заполняют нулями. Разряды, которые выходят за край типа, отбрасывают. Здесь не разбираем знаковые типы и особые правила для отрицательных значений.
Сдвинем единицу влево и восьмерку вправо:
fn main() {
let a = 1u8;
let left = a << 3;
let b = 8u8;
let right = b >> 2;
println!("{} {}", left, right);
}
Даны числа:
let x = 1u8;
Сдвиньте x влево на три разряда
и выведите результат.
Даны числа:
let y = 8u8;
Сдвиньте y вправо на два разряда
и выведите результат.
Даны числа:
let k = 2u8;
let steps = 2u8;
Умножьте k на 4 через
сдвиг разрядов и выведите число.