Home / list of functions / fwnbi::rotl, rotr
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