質問: `uint8(x ^ y)` `^` これは、 > > ^ bitwise XOR integers > > > という文法のようですが、 どのようなときに使われるのかがわかりません。
回答: `uint8( )` の部分は明示的型変換というものなので、これは除外して考えてよいです。 `^` は書いてある通り「ビットごとの排他的論理和」というもので、次の演算となります。 ``` bit3210 x 0011 y 0101xor 0110 ``` 2つの値を2進数で表記したときの各ビットが - 一致 (0,0) または (1,1) のとき、結果 0 - 不一致 (0,1) または (1,0) のとき、結果 1 を得ます(これを各ビットごとに行います) > > どのようなときに使われるのかがわかりません。 > > > ビットごとの排他的論理和が必要な時としか書きようがないですね。足し算だって足し算が必要な時に使われる(おそらくその時には乗算は必要ない)のと同じです。必要ない人には一生使う機会はないし、必要な人なら毎日使います。 例を挙げておくと Xorshift 乱数 巡回冗長検査 SHA 暗号学的単方向ハッシュ 自分が書くコードに排他的論理和が現れることはないっていう人でも、応用結果であれば毎日使っているでしょうね。