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

履歴 編集

function template
<bit>

std::bit_ceil(C++20)

namespace std {
  template <class T>
  constexpr T bit_ceil(T x);
}

概要

整数値を2の累乗値に切り上げる。

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

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

事前条件

  • x以上となる最小の2の累乗値をNとして、型Tにおいて値Nが表現できること

戻り値

Nを返す

例外

投げない

定数式に評価される条件

  • 事前条件を満たすこと

備考

  • xを累乗値に切り上げた値が型Tの範囲内で表現できない場合、未定義動作となり、定数式にはならない

#include <iostream>
#include <bit>

void convert_to_pow2(unsigned int x)
{
  std::cout << x << "\t : " << std::bit_ceil(x) << std::endl;
}

int main()
{
  std::cout << "127\t : " << std::bit_ceil(127u) << std::endl;

  for (unsigned int i = 0u; i <= 32u; ++i) {
    convert_to_pow2(i);
  }
}

出力

127  : 128
0    : 1
1    : 1
2    : 2
3    : 4
4    : 4
5    : 8
6    : 8
7    : 8
8    : 8
9    : 16
10   : 16
11   : 16
12   : 16
13   : 16
14   : 16
15   : 16
16   : 16
17   : 32
18   : 32
19   : 32
20   : 32
21   : 32
22   : 32
23   : 32
24   : 32
25   : 32
26   : 32
27   : 32
28   : 32
29   : 32
30   : 32
31   : 32
32   : 32

バージョン

言語

  • C++20

処理系

参照