Skip to content

Latest commit

 

History

History
63 lines (49 loc) · 2 KB

File metadata and controls

63 lines (49 loc) · 2 KB

stdc_has_single_bit

  • stdbit.h[meta header]
  • function template[meta id-type]
  • cpp26[meta cpp]
template<class T>
bool stdc_has_single_bit(T value);

bool stdc_has_single_bit_uc(unsigned char value);
bool stdc_has_single_bit_us(unsigned short value);
bool stdc_has_single_bit_ui(unsigned int value);
bool stdc_has_single_bit_ul(unsigned long value);
bool stdc_has_single_bit_ull(unsigned long long value);

概要

1ビットだけ立っている値をもっているか判定する。

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

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

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

戻り値

valueが2の累乗値 (1ビットだけ立っている) であればtrue、そうでなければfalseを返す。

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

int main() {
  assert(stdc_has_single_bit(static_cast<std::uint8_t>(0b0000'1000)) == true);
  assert(stdc_has_single_bit(static_cast<std::uint8_t>(0b0000'1010)) == false);
  assert(stdc_has_single_bit(static_cast<std::uint8_t>(0)) == false);

  // 型別関数
  assert(stdc_has_single_bit_uc(static_cast<unsigned char>(0b0000'1000)) == true);
}
  • stdc_has_single_bit[color ff0000]

出力

バージョン

言語

  • C++26

処理系

  • Clang: 21 [mark verified]
  • GCC: 15 [mark verified]
  • Visual C++: 2026 Update 2 [mark noimpl]

関連項目

参照