👽
PHP で XNOR がやりたい時
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 数を指定できないので、~ 0b0
が0b1111...
となり、 INT 型では-1
になってしまいます。そのため& BIT_MASK
をする必要があります。
排他的論理和の否定(XNOR)
排他的論理和の否定は以下の真偽値表の値をとります。
$a | $b | $x |
---|---|---|
0 | 0 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
備考
0b11111111
と書くと 10 進数の 255 と等価の 2 進数が書けます。
$a ^ $b
で$a
と$b
の排他的論理和をとります。
Discussion