0
0

半加算器 Python3編

Posted at

A + Bを2進数で計算した結果を出力するという問題。
2進法は0と1で表されるので今回のような論理演算にはよく使われる、と習った。

で、今それをやっている。
ちなみに、私は数学嫌いだった。(いわゆる文系プログラマ)
まあ、やらないわけにはいかないので。

とにかく。場合分けだな。

        A
        B
=======
    C   S

Cについて考えると
A=0 と B= 0 なら、0で繰り上がらないので0
A=1 と B= 0 なら、1で繰り上がらないので0
A=0 と B= 1 なら、1で繰り上がらないので0
A=1 と B= 1 なら、1で繰り上がるので1
この結果は ANDのときと同じなので、
C = A and B という関係になっていることがわかる。

Sについて考えると
A=0 と B= 0 なら、0
A=1 と B= 0 なら、1
A=0 と B= 1 なら、1
A=1 と B= 1 なら、2で繰り上がるので0になる
この結果は XORのときと同じなので
S = A XOR B という関係になっていることがわかる。

ここから前回の計算を利用して計算すればOK

A, B = map(int,input().split())
C = A & B
S = A ^ B
print(C, S)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0