template <size_t B, class D>
constexpr basic_integer<B, D, false> rotl(
basic_integer<B, D, false> value, size_t shift
) noexcept;
template <size_t B, class D>
constexpr basic_integer<B, D, false> rotr(
basic_integer<B, D, false> value, size_t shift
) noexcept;
template <size_t B, class D>
constexpr basic_integer<B, D, false> rotl(
basic_integer<B, D, false> value, int shift
) noexcept;
template <size_t B, class D>
constexpr basic_integer<B, D, false> rotr(
basic_integer<B, D, false> value, int shift
) noexcept;
constexpr since C++14
Calculates circular shift of integer. If shift is negative (in
int overload) call opposite version.
Example
#include "fwnbi.hpp"
#include <iostream>
#include <iomanip>
using namespace fwnbi::literals;
int main() {
std::cout << std::hex;
std::cout << std::setw(32) << 0xDEADBEEF_ull128 << '\n';
std::cout << std::setw(32) << fwnbi::rotl(0xDEADBEEF_ull128, 112) << '\n';
std::cout << std::setw(32) << fwnbi::rotl(0xDEADBEEF_ull128, -16) << '\n';
}
Output
deadbeef
beef000000000000000000000000dead
beef000000000000000000000000dead