16進数の計算は、10進数の計算と基本的な考え方は同じですが、16になると桁が上がるという点が異なります。
プログラミングやデジタル回路の設計では、16進数のまま計算する場面も少なくありません。
足し算・引き算・掛け算それぞれに独自の手順があり、桁上がり・繰り下がりのルールを正しく理解することが重要です。
本記事では、16進数の足し算・引き算・掛け算の計算手順・桁上がり・繰り下がりの考え方・計算ツールの使い方まで解説していきます。
16進数の計算の基本ルールと演算規則
それではまず、16進数の計算の基本ルールと演算規則について解説していきます。
16進数の計算で10進数と異なる点は、各桁の値が0〜15(0〜F)の範囲であり、16以上になると次の桁に繰り上がるという点です。
A〜Fをそれぞれ10〜15として扱いながら計算し、合計が16以上になった場合は16で割った余りをその桁の値とし、商(1)を上位桁に繰り上げます。
この「基数が16」という原則さえ守れば、10進数の計算と同じ手順で処理できるでしょう。
16進数計算の基本ルール
・各桁の値は0〜F(0〜15)
・合計が16以上 → 16で割り、余りをその桁に、商を上位桁へ繰り上げ
・引き算で足りない → 上位桁から16を借りてくる(繰り下がり)
・掛け算の結果も16進数に変換して処理する
16進数の足し算の手順
16進数の足し算を具体例で確認します。
16進数「2A」+「1F」の計算
1桁目:A(10)+F(15)= 25 → 25÷16=1余り9 → 1桁目は「9」、1を繰り上げ
2桁目:2+1+1(繰り上がり)= 4 → 4桁目は「4」
答え:16進数「2A」+「1F」=「49」
確認:10進数で 42+31=73、73を16進数変換 → 4×16+9=73 ✓
計算後に10進数で検算する習慣をつけると、ミスを防ぐことができます。
繰り上がりが発生した場合は、上位桁に+1することを忘れないようにしましょう。
桁上がりが連続する場合の処理
足し算でFFなど最大値に近い数値が含まれると、桁上がりが連続する場合があります。
16進数「FF」+「01」の計算
1桁目:F(15)+1=16 → 16÷16=1余り0 → 1桁目は「0」、1を繰り上げ
2桁目:F(15)+0+1(繰り上がり)=16 → 16÷16=1余り0 → 2桁目は「0」、1を繰り上げ
3桁目(新桁):1
答え:「FF」+「01」=「100」
確認:255+1=256、256の16進数→「100」✓
「FF+01=100(16進数)」という計算はコンピューターの8ビットオーバーフローの例としてよく挙げられる典型例でしょう。
16進数の引き算の手順と繰り下がり
続いては、16進数の引き算の手順と繰り下がりの処理を確認していきます。
引き算では、上位桁から数値を借りてくる「繰り下がり」が発生することがあります。
基本的な引き算の手順
16進数「4B」-「1E」の計算
1桁目:B(11)-E(14)→ 足りないため上位桁から16を借りる
(11+16)-14=13=D → 1桁目は「D」、上位桁から1を借りたため2桁目から1を引く
2桁目:4-1(借りた分)-1=2 → 2桁目は「2」
答え:「4B」-「1E」=「2D」
確認:75-30=45、45の16進数→ 2×16+13=45 → 「2D」✓
繰り下がりが発生した際は、上位桁から「16」を借りてきてその桁の計算を行い、上位桁から1を差し引くという処理を行います。
10進数の引き算で「10を借りてくる」のと同じ考え方で、「16を借りてくる」と覚えておくと混乱しないでしょう。
繰り下がりが連続する場合
16進数「100」-「01」の計算
1桁目:0-1 → 上位桁から借りたいが2桁目も0のため、さらに上から借りる
3桁目から1借りて2桁目が16、2桁目から1借りて1桁目が16
16-1=15=F → 1桁目「F」
2桁目:16-1(借りた分)-0=15=F → 2桁目「F」
3桁目:1-1(借りた分)=0(省略)
答え:「100」-「01」=「FF」
確認:256-1=255=「FF」✓
繰り下がりが連続するケースは少し複雑ですが、上位桁から順番に16を借りてくるという規則を丁寧に適用すれば正確に計算できます。
16進数の掛け算と計算ツールの活用
続いては、16進数の掛け算の手順と計算ツールの活用方法を確認していきます。
掛け算は足し算・引き算より複雑になるため、実務では計算ツールを使うことが多いです。
16進数の掛け算の手順
16進数「A」×「3」の計算
A(10)×3=30 → 30÷16=1余り14 → 結果:1E
答え:「A」×「3」=「1E」
確認:10×3=30、30の16進数→1×16+14=30→「1E」✓
掛け算の結果を10進数で求めてから16進数に変換するアプローチが、手計算では最もミスが少ない方法でしょう。
複数桁の掛け算になると計算量が増えるため、実務では計算ツールやプログラムを活用することを強くおすすめします。
計算ツールでの16進数演算
Windowsの電卓プログラマーモードでは、HEXモードのまま四則演算(+−×÷)やビット演算が実行できます。
Pythonでは16進数リテラルのまま計算式を書くことができ、結果を自動的に16進数で確認できます。
Pythonでの16進数演算例
0x2A + 0x1F → 73(10進数)、hex(0x2A + 0x1F) → ‘0x49’
0xFF + 0x01 → 256、hex(0xFF + 0x01) → ‘0x100’
0xA * 0x3 → 30、hex(0xA * 0x3) → ‘0x1e’
Pythonでは0xプレフィックスを使えば16進数リテラルをそのまま計算式に使えるため、変換の手間なく演算できるでしょう。
まとめ
本記事では、16進数の足し算・引き算・掛け算の計算手順・桁上がり・繰り下がりの処理・計算ツールの活用まで解説してきました。
16進数の計算は「16になると次の桁に繰り上がる」という基本ルールを守れば、10進数の計算と同じ手順で進められます。
A〜Fを10〜15として扱うことと、繰り上がり・繰り下がりの処理を丁寧に行うことが正確な計算の鍵でしょう。
実務では計算ツールを活用しながら、仕組みの理解は手計算で確認するバランスが大切です。
ぜひ本記事を参考に、16進数の計算力を高めてください。