<stdbit.h>はC23で追加されたビット操作ライブラリをC++から使用するための互換ヘッダである。
C言語では型総称マクロ (type-generic macro) として提供される汎用関数が、C++では関数テンプレートとして提供される。型別の関数 (_uc, _us, _ui, _ul, _ullサフィックス) はCと共通のインタフェースである。
このヘッダで宣言される関数およびマクロはstd名前空間に属さず、グローバル名前空間に定義される。C++の対応するヘッダとして<cstdbit>は提供されない。これは、C言語との相互運用性を重視し、CとC++の両方でコンパイル可能なコードを記述できるようにするためである。
C++固有のビット操作機能が必要な場合は、<bit>ヘッダの使用を推奨する。
マクロ
| 名前 | 説明 | 対応バージョン |
|---|---|---|
__STDC_VERSION_STDBIT_H__ |
ヘッダのバージョン (202311L) |
C++26 |
__STDC_ENDIAN_BIG__ |
ビッグエンディアンを表す定数 | C++26 |
__STDC_ENDIAN_LITTLE__ |
リトルエンディアンを表す定数 | C++26 |
__STDC_ENDIAN_NATIVE__ |
実行環境のエンディアンを表す定数 | C++26 |
先頭のビットカウント
| 名前 | 説明 | 対応バージョン |
|---|---|---|
stdc_leading_zeros |
左から連続した0のビットを数える (function template) | C++26 |
stdc_leading_ones |
左から連続した1のビットを数える (function template) | C++26 |
末尾のビットカウント
| 名前 | 説明 | 対応バージョン |
|---|---|---|
stdc_trailing_zeros |
右から連続した0のビットを数える (function template) | C++26 |
stdc_trailing_ones |
右から連続した1のビットを数える (function template) | C++26 |
先頭のビット位置検索
| 名前 | 説明 | 対応バージョン |
|---|---|---|
stdc_first_leading_zero |
左から最初の0のビット位置を求める (function template) | C++26 |
stdc_first_leading_one |
左から最初の1のビット位置を求める (function template) | C++26 |
末尾のビット位置検索
| 名前 | 説明 | 対応バージョン |
|---|---|---|
stdc_first_trailing_zero |
右から最初の0のビット位置を求める (function template) | C++26 |
stdc_first_trailing_one |
右から最初の1のビット位置を求める (function template) | C++26 |
ビット数カウント
| 名前 | 説明 | 対応バージョン |
|---|---|---|
stdc_count_zeros |
0のビットを数える (function template) | C++26 |
stdc_count_ones |
1のビットを数える (function template) | C++26 |
2の累乗整数
| 名前 | 説明 | 対応バージョン |
|---|---|---|
stdc_has_single_bit |
1ビットだけ立っている値をもっているか判定する (function template) | C++26 |
stdc_bit_width |
値を表現するために必要なビット幅を求める (function template) | C++26 |
stdc_bit_floor |
整数値を2の累乗値に切り下げる (function template) | C++26 |
stdc_bit_ceil |
整数値を2の累乗値に切り上げる (function template) | C++26 |
バージョン
言語
- C++26
処理系
- Clang: 21 ✅
- GCC: 15 ✅
- Visual C++: 2026 Update 2 ❌
関連項目
<bit>- C++標準のビット操作ライブラリ