きっかけ
タイトル通りビット演算についてまとめる。
きっかけは、AtCoderでこの問題が出た時よくわからなかったため。
OR
OR 演算は左辺と右辺の同じ位置にあるビットを比較し、
どちらかのビットが 1 の場合 1 にする。
例えば、5 と 3 の OR を取ってみる
二進数に直すと、以下の通りになる
- 5: 00000000000000000000000000000101
- 3: 00000000000000000000000000000011
そうすると、7(00000000000000000000000000000111)になる
コードで確認してみる
package main
func main(){
a, b := 5, 3
println(a|b)
// output: 7
}
AND
OR 演算は左辺と右辺の同じ位置にあるビットを比較し、
両方のビットが 1 の場合 1 にする。
- 5: 00000000000000000000000000000101
- 3: 00000000000000000000000000000011
そうすると、1(00000000000000000000000000000001)になる
package main
func main(){
a, b := 5, 3
println(a&b)
// output: 1
}
XOR
OR 演算は左辺と右辺の同じ位置にあるビットを比較し、
どちらか 1 つが 1 の場合 1 にする。
package main
func main(){
a, b := 5, 3
println(a^b)
// output: 6
}