Циклический сдвиг std::rotl в C++
Циклический сдвиг беззнакового целого влево
делает std::rotl из <bit>:
биты, ушедшие за старший край, появляются
с младшей стороны.
Второй аргумент задает число позиций; лишние обороты нормализуют по ширине типа. Запишем восьмибитное значение, сдвинем на две позиции и выведем результат:
#include <bit>
#include <cstdint>
#include <iostream>
std::uint8_t value = 0b10000001;
std::uint8_t rotated = std::rotl(value, 2);
std::cout << static_cast<unsigned>(rotated) << "\n";
Объявите std::uint8_t nib
равным 3. Присвойте nib
результат std::rotl на 1
позицию и выведите nib как
unsigned.
Для std::uint16_t word
со значением 1 выведите std::rotl
на 4 позиции как беззнаковое
целое.