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

履歴 編集

function template
<stdbit.h>

stdc_first_trailing_one(C++26)

template<class T>
unsigned int stdc_first_trailing_one(T value);

unsigned int stdc_first_trailing_one_uc(unsigned char value);
unsigned int stdc_first_trailing_one_us(unsigned short value);
unsigned int stdc_first_trailing_one_ui(unsigned int value);
unsigned int stdc_first_trailing_one_ul(unsigned long value);
unsigned int stdc_first_trailing_one_ull(unsigned long long value);

概要

右から最初の1のビット位置を求める。

C言語の<stdbit.h>で定義される関数であり、C++においてはC互換性のために提供される。C言語では汎用版は型総称マクロ (type-generic macro) として定義されるが、C++では関数テンプレートとして提供される。

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

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

戻り値

valueの最下位ビット (LSB) 側から数えて、最初の1ビットの位置を1始まりで返す。すべてのビットが0の場合は0を返す。

#include <stdbit.h>
#include <cassert>
#include <cstdint>

int main() {
  // 0b11110000 の最初の1は5番目 (LSB側から)
  assert(stdc_first_trailing_one(static_cast<std::uint8_t>(0b1111'0000)) == 5);
  // すべて0なら0を返す
  assert(stdc_first_trailing_one(static_cast<std::uint8_t>(0)) == 0);
}

出力

バージョン

言語

  • C++26

処理系

参照