最終更新日時:
が更新

履歴 編集

function template
<bit>

std::shl(C++29)

namespace std {
  template <class T, class S>
  constexpr T shl(T x, S s) noexcept; // C++29
}

概要

xを左方向にsビットシフトした値(x2s乗倍した値)を求める。

組み込みのoperator<<と異なり、シフト量sTのビット幅以上であっても、また負であっても未定義動作とならない。sが負の場合は、右方向へ-sビットシフトした結果(shr(x, -s))となる。

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

  • TSがそれぞれ符号付きまたは符号なし整数型であること

戻り値

十分な値域をもつ仮想的な整数型でx × 2sを計算して負の無限大方向に丸め、その結果をstatic_castTに変換した値を返す。

例外

投げない

備考

  • shl(x, s)shr(x, -s)に等しい。

#include <bit>
#include <cstdint>
#include <print>

int main()
{
  std::uint8_t x = 0b0000'0011;

  std::uint8_t r = std::shl(x, 2);

  std::println("{:08b}", r);
}

出力

00001100

バージョン

言語

  • C++29

処理系

関連項目

参照