半加算器
京子ちゃんは 二進数 1 けたの整数 A と B を使って、 A + B
を計算したいと思っています。
上記の画像のように、 A と B を足した結果 (2 進表記) の下から 2 けた目の値を C 、下から 1 けた目の値を S とします。 C と S を出力してください。
#入力
A B
#出力
C, S をこの順に、半角スペース区切りで出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。
C S
#コード
a,b = map(int,input().split())
if a == 1 and b == 1:
c = 1
s = 0
elif (a == 0 and b == 1) or (a == 1 and b == 0):
c = 0
s = 1
else:
c = 0
s = 0
print(c,s)
#参考
- まず、 C について考えましょう。 C は A と B が両方とも 1 のときだけ 1 になります。これは、以下の表のように AND 演算の結果と等しいです。つまり、
C = A AND B
となります。A B C 0 0 0 0 1 0 1 0 0 1 1 1 - 次に S について考えます。 S は A と B のどちらか一方のみ 1 のときだけ 1 になります。これは、以下の表のように XOR 演算の結果と等しいです。つまり、
S = A XOR B
となります。
A | B | S |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
- 半加算器は簡易的な論理回路図で表現するとこのようになります。
a, b = map(int, input().split())
c = a & b
s = a ^ b
print(c, s)