Goのビット演算についてまとめる

publish: 2022-09-24

きっかけ

タイトル通りビット演算についてまとめる。

きっかけは、AtCoderでこの問題が出た時よくわからなかったため。

OR

OR 演算は左辺と右辺の同じ位置にあるビットを比較し、

どちらかのビットが 1 の場合 1 にする。

例えば、5 と 3 の OR を取ってみる

二進数に直すと、以下の通りになる

そうすると、7(00000000000000000000000000000111)になる

コードで確認してみる

package main
func main(){
a, b := 5, 3
println(a|b)
// output: 7
}

AND

OR 演算は左辺と右辺の同じ位置にあるビットを比較し、

両方のビットが 1 の場合 1 にする。

そうすると、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
}