👽

PHP で XNOR がやりたい時

2022/06/09に公開

1 bit の入力$a,$bに対して、 1 bit の出力$xをつくる排他的論理和の否定(XNOR)を行いたい時、PHPで書く場合は、

const BIT_MASK = 0b1;
$a = 0b1; // or 0b0
$b = 0b1; // or 0b0
$x = ((~($a ^ $b)) & BIT_MASK);

と書きます。

PHPでは Bit 数を指定できないので、~ 0b00b1111...となり、 INT 型では-1になってしまいます。そのため& BIT_MASKをする必要があります。

排他的論理和の否定(XNOR)

排他的論理和の否定は以下の真偽値表の値をとります。

$a $b $x
0 0 1
1 0 0
0 1 0
1 1 1

備考

0b11111111と書くと 10 進数の 255 と等価の 2 進数が書けます。
https://www.php.net/manual/ja/language.types.integer.php

$a ^ $b$a$bの排他的論理和をとります。
https://www.php.net/manual/ja/language.operators.bitwise.php

GitHubで編集を提案

Discussion