きっかけ

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

きっかけは、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
}