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

Метод rotate_right

Метод rotate_right выполняет циклический сдвиг битов значения типа i32 вправо. В отличие от обычного сдвига, при котором освободившиеся биты заполняются нулями, циклический сдвиг переносит "выпавшие" справа биты в начало числа. Параметром метод принимает количество позиций n типа u32, на которое нужно сдвинуть биты. Метод возвращает новое значение типа i32, не изменяя исходное.

Синтаксис

i32::rotate_right(self, n: u32) -> i32

Пример

Давайте выполним циклический сдвиг числа 1 вправо на одну позицию:

fn main() { let res = 1i32.rotate_right(1); println!("{}", res); }

Результат выполнения кода:

-2147483648

Младший бит числа 1 переместился в старший разряд, что для знакового типа i32 даёт отрицательное значение.

Пример

Давайте выполним циклический сдвиг числа 8 вправо на две позиции:

fn main() { let res = 8i32.rotate_right(2); println!("{}", res); }

Результат выполнения кода:

2

Число 8 в двоичном виде - это 1000. После сдвига вправо на две позиции получаем 0010, что равно 2.

Пример

Давайте выполним циклический сдвиг числа 0b1010 вправо на одну позицию:

fn main() { let res = 0b1010i32.rotate_right(1); println!("{}", res); }

Результат выполнения кода:

5

Число 1010 после циклического сдвига вправо превращается в 0101, что равно 5.

Пример

Если количество позиций кратно 32 (числу бит в i32), значение не меняется:

fn main() { let res = 12345i32.rotate_right(32); println!("{}", res); }

Результат выполнения кода:

12345

Смотрите также

  • метод rotate_left,
    который выполняет циклический сдвиг битов влево
  • метод swap_bytes,
    который меняет порядок байтов числа
  • метод leading_zeros,
    который возвращает количество ведущих нулей
  • метод trailing_zeros,
    который возвращает количество завершающих нулей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить