РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
345 of 1245 menu

Метод 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,
    который меняет порядок байтов местами
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить