C / C++・レジスタ操作 / CALCULATOR
ビット演算計算機|AND・OR・XOR・NOT
組み込みC/C++のビット演算・ビットマスクを計算。AND・OR・XOR・NOT・シフトを8・16・32ビット幅で確認できます。
← 技術計算ツール一覧へ戻るビット演算計算機|AND・OR・XOR・NOTの使い方
入力値の基数を選ぶ
10進数・2進数・8進数・16進数から選択します。接頭辞を使う場合は選択した基数と一致させてください。
演算する値と操作を入力する
左オペランド、AND・OR・XOR・NOT・左右シフトのいずれかを指定します。NOTでは右側の値は演算に使われません。
ビット幅を選んで計算する
対象のレジスタやデータ型に合わせて8・16・32ビットを選び、「計算する」を押します。
結果を確認して仕様と照合する
10進数、符号付き値、16進数、2進数を確認します。実際のC/C++式では型や整数昇格、シフト規則も確認してください。
計算式と入力例
演算後の値を指定ビット幅のマスク(2^幅 − 1)で制限します。NOTと左シフトも同じ幅で折り返して表示します。
8ビットで 12 (00001100) AND 5 (00000101) を計算すると、4 (00000100) です。
よくある質問
入力方法や結果の見方、利用時の注意点をまとめました。
2進数や16進数を入力できますか?
入力基数を選んで入力できます。2進数は0b、8進数は0o、16進数は0xの接頭辞も利用できます。結果は符号なし値と選択幅の2の補数としての符号付き値を併記します。
値は符号付き整数ですか?
入力は0以上の符号なし整数として扱います。出力の符号付き10進数は選択した幅の2の補数表現です。負数を含むC言語の式の挙動は型や整数昇格にも依存するため、処理系と対象型の仕様も確認してください。
シフト量がビット幅以上の場合はどうなりますか?
このツールでは結果を0として扱います。C/C++のシフト演算では型やシフト量によって未定義動作などの注意点があるため、ここでの結果を言語処理系の動作保証とみなさないでください。
ビット演算の結果を16進数で確認できますか?
はい。結果欄にビット幅に合わせた16進数と2進数を表示します。レジスタ値やマスクとの照合に利用できます。
AND演算は何を確認するときに使いますか?
各ビットの両方が1のときだけ1になる演算です。特定のフラグが立っているかをマスクで確認する用途に使われます。
OR演算は何を確認するときに使いますか?
各ビットのどちらかが1なら1になります。複数のフラグを組み合わせる処理などで使われます。
XOR演算の特徴は何ですか?
対応するビットが異なる場合に1になります。同じ値同士のXORは0になります。
NOTの結果が大きな数に見えるのはなぜですか?
NOTは選んだビット幅の各ビットを反転します。たとえば8ビットなら結果は0〜255に収まり、幅を変えると反転するビット数も変わります。
左シフトであふれたビットはどうなりますか?
指定ビット幅から外れた上位ビットは結果に残らず、幅の範囲内に制限されます。C/C++実装での符号付き値の扱いとは区別してください。
右シフトは符号を保持しますか?
入力は符号なし整数として処理するため、右シフトで符号拡張はしません。符号付き型のC/C++式とは結果が異なる場合があります。
負の数をそのまま入力できますか?
入力値は0以上の整数です。負数を扱う場合は、選択したビット幅での2の補数表現に変換して入力し、型の仕様を確認してください。
8・16・32ビットのどれを選べばよいですか?
対象レジスタやデータ型の幅に合わせます。幅が不明な場合は、マイコンのデータシートやソースコードの型定義を確認してください。
計算結果をコードへそのまま貼り付けてよいですか?
結果は入力した幅での参考値です。定数の型、整数昇格、対象処理系の仕様を確認し、必要ならユニットテストで検証してください。
計算結果をそのまま製品設定に使えますか?
計算結果は入力した前提に基づく参考値です。対象デバイスの仕様、許容誤差、タイミング制約を確認してから利用してください。