Метод rotate_left
Метод rotate_left выполняет циклический
сдвиг битов значения типа i32 влево.
При таком сдвиге биты, вышедшие за пределы
старшего разряда, переносятся в младшие
разряды. Параметром метод принимает количество
позиций для сдвига. Возвращается новое значение
типа i32, исходное число не изменяется.
Синтаксис
i32::rotate_left(self, n: u32) -> i32
Пример
Давайте выполним циклический сдвиг числа
1 влево на 1 позицию:
fn main()
{
let res = 1i32.rotate_left(1);
println!("{}", res);
}
Результат выполнения кода:
2
Пример
Давайте выполним циклический сдвиг числа
1 влево на 31 позицию:
fn main()
{
let res = 1i32.rotate_left(31);
println!("{}", res);
}
Результат выполнения кода:
-2147483648
Пример
Давайте выполним циклический сдвиг числа
1 влево на 32 позиции.
Так как тип i32 занимает 32 бита,
сдвиг на полный цикл вернёт исходное значение:
fn main()
{
let res = 1i32.rotate_left(32);
println!("{}", res);
}
Результат выполнения кода:
1
Пример
Давайте применим циклический сдвиг влево
к числу -2147483648 (минимальному
значению i32) на 1 позицию:
fn main()
{
let res = (-2147483648i32).rotate_left(1);
println!("{}", res);
}
Результат выполнения кода:
1
Смотрите также
-
метод
rotate_right,
который выполняет циклический сдвиг битов вправо -
метод
leading_zeros,
который возвращает количество ведущих нулей -
метод
trailing_zeros,
который возвращает количество завершающих нулей -
метод
swap_bytes,
который меняет порядок байтов местами