解説
コンピュータが数を足せるのは、足し算が論理演算の組み合わせで作れるからです。その最も基本的な部品が「半加算器(half adder)」です。
1桁の2進数 a, b を足すと、結果は「和」と「桁上がり(carry)」の2つ。表を作ると、和は a と b が異なるとき1=XOR、桁上がりは両方1のとき1=AND になっています。
たった2つの演算で 1+1=10(2進数) という足し算が完成します。これを並べると何桁でも足せる回路になり、CPUの計算の正体が見えてきます。
書き方
半加算器: 1桁の足し算を 和 = a ^ b(XOR)、桁上がり = a & b(AND)で作る。 ・def half_adder(a, b): で和と桁上がりの2値を return s, carry のように複数返す。 ・for a in (0, 1): の二重ループで真理値表を作る。 ・str(数値) で文字列化し + で連結(桁上がりと和を並べて表示)。
書いて動かす
この回の課題
和=XOR・桁上がり=AND で半加算器の関数を作り、真理値表を表示し、1+1 が2進数の10になることを確かめよう。
コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。
自分のPCでも続けてみませんか
Windows版 InsightPy は Python を同梱しているので、環境構築なしで同じコードを書いて実行できます。 書いたコードを保存しておけるほか、ステップ実行で変数の変化を1行ずつ確かめられます。 個人の学習や私的な目的でのご利用は、31日目以降も無料です(スクリプトの保存は10本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。