$bitNot (ビット否定)
最終更新:2026-10-09
$bitNot (ビット否定)
$bitNot は単一の整数に対してビット単位の NOT(2 の補数)を行います。オペランドを 1 つだけ取る唯一のビット演算子です。MongoDB 6.3 以降で利用でき、結果は -x-1 と等しいため、NOT 5 は -6 になります。補完マスクの作成やビット演算での一般的な否定に使われます。引数が null または欠落している場合は null を返します。オペランドは int32 または int64 である必要があります。符号が反転することに注意してください。これは 2 の補数であり、単純な絶対値の反転ではありません。
| カテゴリ | 数学 |
|---|---|
| MongoDB バージョン | 6.3+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $bitNot: <integer-expression> }
⚙️ パラメータ
| 整数 | int32 または int64 の整数、あるいはそれらに解決される式。 |
|---|
戻り値:入力のビット単位 NOT(-x-1)。null または欠落している場合は null
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $bitNot: 権限ビットを反転して除外マスクを作成
db.users.aggregate([
{ $project: {
denied: { $bitNot: '$allowedBits' }
} }
])
出力:
{ '_id': 1, 'denied': -6 }
{ '_id': 2, 'denied': -1 }
📌 注意事項
- 結果は 2 の補数の NOT で、-x-1 と等しい
- オペランドはちょうど 1 つ
- 対応するのは int32 と int64 のみ
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$bitNot(5) はいくつですか?
A-6 です。2 の補数の NOT は -x-1 に従います。
Qなぜ $bitNot は負の結果になるのですか?
A2 の補数の NOT は最上位ビットを反転させ、符号が変わるためです。
Q$bitNot はどこで役立ちますか?
A補完マスクの作成や、他のビット演算子との組み合わせなどです。