VRChat CS集会で学ぶ!2進数の足し算と引き算をマスターしよう!
詳細情報
発表ハイライト
- 2進数の計算は10進数と同様に、無限桁で考えることができます。
- コンピュータでは、桁数が限られているため、2の補数という考え方で負数を表現します。
- 2の補数を用いることで、引き算を足し算に置き換えることができます。
- コンピュータは、加算器のみで四則演算を行うことができます。
2進数の計算ってどんな感じ?
皆さんは、コンピュータの内部でどのように計算が行われているか知っていますか?実は、コンピュータは私たち人間が使っている10進数ではなく、0と1だけで表現される2進数を使って計算を行っています。
今回の発表では、夜鍋ヨナさんがVRChatのCS集会で「2進数の計算 パート2.1」というテーマで、2進数の引き算について解説してくれました。2進数の足し算は前回説明があったようなので、今回は有限桁の2進数の引き算について深掘りしていきます。
無限桁の2進数の計算
無限桁の2進数の計算は、10進数の筆算と同様に、繰り上がりや繰り下がりを考えながら計算すればOKです。前回の発表動画を参考にすると、より理解が深まるでしょう。
有限桁の2進数の計算:コンピュータでの計算方法
しかし、コンピュータは無限桁の数を扱うことはできません。そこで登場するのが有限桁の世界です。有限桁の2進数の計算では、無限桁の場合とは少し異なる点があります。
- 補数の定義:補数とは、ある数に足すと、桁数分の1になるような数のことです。例えば、10進数で2桁の数の補数なら、100になるような数です。
- 2の補数:2進数の場合、2の補数は2のべき乗から元の数を引いた数になります。例えば、4桁の2進数「0100」の2の補数は、16 - 4 = 12となり、2進数で「1100」となります。
- 負数の補数表現:コンピュータでは、2の補数を用いて負数を表現します。例えば、-4を4桁の2進数で表す場合、4の2の補数である1100を用います。
- 負数の加算と減算:2の補数を用いることで、引き算を足し算に置き換えることができます。
合同式の話(ちょっと高度)
合同式は、数学で用いられる概念で、ある数と別の数が、ある数で割ったときに同じ余りになる関係を表すものです。2の補数の考え方と関連しており、今回の発表では、この合同式の概念を使って補数を理解を深めることができます。
負数の補数表現
2の補数を使うと、負数を表現することができます。
10進数 | 符号と絶対値 | 2の補数 |
---|---|---|
+7 | +111 | - |
+6 | +110 | - |
+5 | +101 | - |
+4 | +100 | - |
+3 | +011 | 011 |
+2 | +010 | 010 |
+1 | +001 | 001 |
0 | 000 | 000 |
-1 | - | 111 |
-2 | - | 110 |
-3 | - | 101 |
-4 | - | 100 |
表を見ると、最上位ビット(MSB)が符号ビットのように見えることがわかりますね。0なら正数、1なら負数を表しています。
負数を足す ⇔ 引き算
2の補数を用いると、引き算を足し算に置き換えることができます。
A - B = A + (-B)
= A + (2^n - B) - 2^n
この式で、2^n - Bで補数を計算し、-2^nで符号の調整を行っています。
計算の例
実際に2進数の計算をしてみましょう。
Q1. (9 - 5)<sub>10</sub> を2進数4桁で計算せよ
1001 - 0101 = (1001 + 1011) - 10000
= 10100 - 10000
= 0100
Q2. (5 - 9)<sub>10</sub> を2進数4桁で計算せよ
0101 - 1001 = (0101 + 0111) - 10000
= 1100 - 10000
= -0100 (←補数に直す)
= 1100
第11回のまとめ
- 2進数の負数は補数表現で表される
- 最上位ビットは符号ビットとして機能する
- 引き算は、補数を足すことで実現できる
- 加算器だけで四則演算ができる
今後の展望
- 全加算器で減算できるようにする
- シフト回路による乗算と除算
今回の発表では、2進数の引き算の基礎を学ぶことができました。コンピュータの内部でどのように計算が行われているのか、少し理解が深まったのではないでしょうか?
今後も、夜鍋ヨナさんの発表で、コンピュータの仕組みについて学んでいきましょう!