【論理演算メニュー】> STEP: 8 半加算器 (paizaランク D 相当) [難易度: 1440 ±15]
※リンク先へ移動するためには[paiza]へのログインが必要です。
京子ちゃんは 二進数 1 けたの整数 A と B を使って、 A + B
を計算したいと思っています。
上記の画像のように、 A と B を足した結果 (2 進表記) の下から 2 けた目の値を C 、下から 1 けた目の値を S とします。 C と S を出力してください。
入力値(例)
0 1
出力値(例)
0 1
解答例
1 2 3 4 5 6 7 8 9 10 11 |
<?php list($a, $b) = explode(" ", trim(fgets(STDIN))); $a = intval($a); $b = intval($b); $c = ($a & $b); $s = ($a ^ $b); echo $c. " ". $s. "\n"; ?> |
解説
半加算器とは、1桁の2進数を2つ加算する仕組みのことです。
加算パターンには4通りあり、
X | Y | C | S |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
C は、 Carry (桁上がり)という意味で、 S は、 Sum (和)という意味です。このような真理値表で表せます。
Cは、XとYの両方が「真」のとき「真」になります。これは、XとYのAND演算(式 & 式)です。
Sは、XとYのどちらか一方が「真」のとき「真」になります。これは。XとYのXOR演算(式 ^ 式)です。
AND演算とXOR演算を使ってコードを書きます。