VRChat CS集会で学ぶ!2進数の足し算と引き算をマスターしよう!

詳細情報

集会名 CS集会
日時 2023年10月24日 22:00 - 22:30
テーマ 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進数の引き算の基礎を学ぶことができました。コンピュータの内部でどのように計算が行われているのか、少し理解が深まったのではないでしょうか?

今後も、夜鍋ヨナさんの発表で、コンピュータの仕組みについて学んでいきましょう!

スライド資料はこちら

CS集会の他の発表もチェック!

シフト演算ってなぁに?10進数と2進数で考えてみよう!

VRChatで量子コンピュータの世界を体験!CS集会#33で夜鍋ヨナさんが紹介した量子コンピュータの世界

VRChat CS集会で発表!量子コンピュータで半加算回路を実装してみたよ!

生成AIとプログラミング:夜鍋ヨナさんが語る、LLMとシステム開発の未来!

VRChat CS集会で学ぶ!比較器の仕組みと引き算を用いた実装

シフト演算をわかりやすく解説!コンピュータ内部でどう動いているの?