• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function template
    <bit>

    std::rotl

    namespace std {
      template <class T>
      [[nodiscard]] constexpr T rotl(T x, int s) noexcept;
    }
    

    概要

    左循環ビットシフト。

    xをシフト量sだけ左に循環シフトする。

    テンプレートパラメータ制約

    • Tが符号なし整数型であること

    戻り値

    符号なし整数型Tのビット数をNs % Nrであるとして。

    • rが0である場合はxが返る
    • rが正である場合は(x << r) | (x >> (N - r))が返る
    • rが負である場合はrotr(x, -r)が返る

    例外

    投げない

    備考

    • この関数は、ハードウェア機能として提供されている場合がある

    #include <cassert>
    #include <bit>
    #include <cstdint>
    
    int main()
    {
      auto i = static_cast<std::uint32_t>(0b0001'0000'0000'0000'0000'0000'0000'0000u);
      std::uint32_t a = std::rotl(i, 4);
      assert(a == 0b0000'0000'0000'0000'0000'0000'0000'0001u);
    
      std::uint32_t b = std::rotl(i, -4);
      assert(b == 0b0000'0001'0000'0000'0000'0000'0000'0000u);
    }
    

    出力

    バージョン

    言語

    • C++20

    処理系

    参照