Spec-Zone.ru › C++

std::rotr

Определено в заголовочном файле <bit>
template< class T >
constexpr T rotr( T x, int s ) noexcept;
(начиная с C++20)

Вычисляет результат побитового циклического сдвига значения x вправо на s позиций. Эта операция также известна как циклический сдвиг вправо.

Формально, пусть N — это std::numeric_limits<T>::digits, а r — это s % N.

  • Если r равно 0, возвращает x;
  • если r положительно, возвращает (x >> r) | (x << (N - r));
  • если r отрицательно, возвращает std::rotl(x, -r).

Эта перегрузка участвует в разрешении перегрузки, только если T является беззнаковым целочисленным типом (то есть unsignedchar, unsignedshort, unsignedint, unsignedlong, unsignedlonglong или расширенным беззнаковым целочисленным типом).

Параметры

x - значение беззнакового целочисленного типа
s - количество позиций сдвига

Возвращаемое значение

Результат побитового циклического сдвига x вправо на s позиций.

Примечания

Макрос проверки поддержки функции Значение Стандарт Функция
__cpp_lib_bitops 201907L (C++20) Битовые операции

Пример

#include <bit>
#include <bitset>
#include <cstdint>
#include <iostream>

int main()
{
    using bin = std::bitset<8>;
    const std::uint8_t x{0b00011101};
    std::cout << bin(x) << " <- x\n";
    for (const int s : {0, 1, 9, -1, 2})
        std::cout << bin(std::rotr(x, s)) << " <- rotr(x, " << s << ")\n";
}

Вывод:

00011101 <- x
00011101 <- rotr(x, 0)
10001110 <- rotr(x, 1)
10001110 <- rotr(x, 9)
00111010 <- rotr(x, -1)
01000111 <- rotr(x, 2)

См. также

rotl
(C++20)
вычисляет результат побитового циклического сдвига влево
(шаблон функции)
bit_reverse
(C++29)
обращает порядок битов целого числа
(шаблон функции)
operator<<=operator>>=operator<<operator>>
выполняют двоичный сдвиг влево и вправо
(открытые функции-члены std::bitset<N>)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/rotr

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API