「足し算引き算なんて余裕でしょ」と思って過去問を開いたら、
2進数だのシフト演算だのが出てきて固まったことありませんか?
基本情報の算術演算は、“学校の算数”とはちょっと世界が違います。
この記事では、基本情報で出る加算・減算・乗算・除算のしくみを、2進数からオーバーフローまでやさしく解説します!
- 基本情報で問われる算術演算の全体像がわかる
- 2進数を使った加算減算乗算除算のしくみを理解できる
- シフト演算でかけ算割り算を高速に行う考え方がわかる
- オーバーフローや符号付き整数の注意点をイメージで理解できる
- 試験本番で迷わない算術演算の押さえるべきポイントが整理できる
基本情報の算術演算とは?加減乗除と2進数のキホン
まず前提として、コンピュータは10進数じゃなく2進数で動く機械です。
私たちはふつう「0〜9」の10種類の数字を使う10進数ですが、
コンピュータは「0」と「1」だけの2進数で計算します。
| 10進数 | 2進数 |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 2 | 10 |
| 3 | 11 |
| 4 | 100 |
| 5 | 101 |
| 6 | 110 |
| 7 | 111 |
2進数の仕組み自体が不安なら、先に
基本情報のn進数を完全攻略!2進数・16進数も怖くない
を押さえておくと、このページの理解がぐっと楽になります。(キホン猫の基本情報技術者試験LABO)
基本情報の「算術演算」は、この2進数で
- 加算(たし算)
- 減算(ひき算)
- 乗算(かけ算)
- 除算(わり算)
をどうやってやっているか、という話です。
そして計算するときには、
- 表現できる数の範囲(ビット数)
- オーバーフロー(桁あふれ)
- 小数の誤差
なんかもセットで出題されます。
加算・減算・乗算・除算を2進数で理解する実践解説
ここからは、試験で絶対に外せない「四則演算」を、
2進数のイメージでサクッと見ていきます。
2進数の加算(たし算)は「1+1=10」がカギ
2進数の足し算ルールはこれだけ覚えればOKです
| 式 | 結果 | イメージ |
|---|---|---|
| 0+0 | 0 | 何も増えない |
| 0+1 | 1 | 1だけ増える |
| 1+0 | 1 | 1だけ増える |
| 1+1 | 10 | 2進数には“2”がないので繰り上がり |
例:3+5を2進数で計算してみると
- 3 … 011
- 5 … 101
011 (3)
+ 101 (5)
------
1000 (8)
ちゃんと 3+5=8 になりました。
やっていることはふつうの筆算と同じで、
「1+1のときだけ繰り上がる」と覚えればOKです。
➖ 減算(ひき算)は「2の補数」で足し算に変身
コンピュータは、実は「引き算専用の回路」を持っていません。
その代わりに、減算を加算に変えて計算します。
そのときに使うのが 2の補数(にのほすう) という表現です。
たとえば「5−3」をやりたいときは、
「5+(−3)」に変えて計算します。
この「−3」を2の補数で作る手順:
- 3を2進数にする
→00000011 - ビットを反転(0↔1)
→11111100 - 1を足す
→11111101(これが−3)
あとは足し算するだけ
00000101 (5)
+ 11111101 (-3)
----------
00000010 (2)
引き算なのに足し算で回答が出ている、というのがポイントです。
試験では、
「−1は2進数でどう表すか」
みたいな形で2の補数がよく聞かれます。
乗算(かけ算)はシフト演算で超高速
かけ算は本質的には「同じ数の足し算のくり返し」です。
3×4 = 3+3+3+3
でも、これを毎回足していたらめちゃくちゃ遅いので、
コンピュータはシフト演算を使って高速に処理します。
左シフト(<<)=×2のイメージ
2進数を左に1ビットずらすと、値が2倍になります。
| 元の値 | 2進数 | 左に1シフト | 結果 |
|---|---|---|---|
| 1 | 0001 | 0010 | 2 |
| 2 | 0010 | 0100 | 4 |
| 4 | 0100 | 1000 | 8 |
つまり
x << 1は「x×2」x << 2は「x×4」
という感覚でOK。
「シフト=桁をずらして10倍してる」10進数の直感に近いです。
除算(わり算)は右シフトで÷2
割り算はその逆で、右シフトを使います。
| 元の値 | 2進数 | 右に1シフト | 結果 |
|---|---|---|---|
| 8 | 1000 | 0100 | 4 |
| 4 | 0100 | 0010 | 2 |
| 2 | 0010 | 0001 | 1 |
x >> 1は「x÷2」x >> 2は「x÷4」
ただし、整数の世界なので小数点以下は切り捨てです。
オーバーフロー(桁あふれ)に要注意
コンピュータは「何ビットで表すか」が決まっています。
たとえば 8ビットの符号付き整数なら、
表せる範囲は
- −128 〜 +127
です。
なので、
- 127+1 → −128
- −128−1 → +127
みたいな「ぐるっと一周」現象が起きます。
これが オーバーフロー(桁あふれ)。
試験では
- 表現できる最大値・最小値
- その範囲を超えたときの挙動
を聞いてくることが多いので、
「ビット数 → 範囲 → オーバーフロー」のセットで覚えておくと安心です。
CBT試験での計算ルールや電卓の扱いは、
基本情報技術者試験は電卓の持込不可!最新ルールとCBT対策
に詳しくまとまっています。(キホン猫の基本情報技術者試験LABO)
小数計算の誤差(0.1+0.2≠0.3問題)
2進数では、小数をきれいに表せないことが多いです。
たとえば「0.1」は、2進数にすると0.0001100110011... みたいに永遠に続く数になります。
その結果、
- 0.1+0.2
- 本当は0.3のはずが
- 実際の内部表現は 0.30000000000000004
みたいな“ちょっとズレる現象(丸め誤差)”が起きます。
よくある対策イメージ
- 金額などは「円」ではなく「銭(1/100)」の整数で扱う
- 一定の桁数で四捨五入してから扱う
- 「完全に等しいか」ではなく「誤差の範囲内か」で比較する
基本情報ではここまで深掘りされませんが、
「小数はきっちり表せないことがある」と知っておくだけでも、
計算結果の違和感が減ります。
キホン猫のワンポイント!

算術演算は「2進数の加減乗除+シフト+オーバーフロー」だけ押さえれば大丈夫だよ、少しずつ手を動かしてなれていこうにゃ〜

コメント