【論理演算メニュー】> STEP: 5 NAND 演算の基本 (paizaランク D 相当) [難易度: 1192 ±15]
※リンク先へ移動するためには[paiza]へのログインが必要です。
0 または 1 の整数 A と B が与えられます。 A NAND B
の結果を出力してください。
ここで、 NAND 演算とは、以下の表にしたがって算出する論理演算のことを指します。
入力1 | 入力2 | 出力 |
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
入力値(例)
0 0
出力値(例)
1
解答例
1 2 3 4 5 6 7 |
<?php list($a, $b) = explode(" ", trim(fgets(STDIN))); $ans = !($a & $b); echo intval($ans); ?> |
解説
否定論理積(NAND)とは、論理演算の1つで、2つの与えられた値のいずれも「真」のときに「偽」、それ以外のときに「真」となる演算です。
1 1 => 0
それ以外は=> 1
いずれも「真」のときは「真」、それ以外は「偽」となる論理積(AND)を否定(NOT)したのが否定論理積となります。
プログラミング言語では、!(式 && 式)と記載できます。(式 && 式)の結果を否定(真偽逆転)します。
このpaizaの問題では、
1 |
echo !($a & $b); |
と書くと、出力でなにも表示されませんでした。
変数を整数型に変換するintval()関数を$ansに使うことで表示できるようになりました。このあたりはよく分かっていないのでもう少し勉強したいです。