go 언어에서 모든 연산자의 각 항의 타입은 항상 같아야 한다.(시프트 연산은 제외)그래서 타입 변환을 통해서 타입을 같도록 맞춰준 다음에 연산해야 한다. 또 연산의 결과 타입도 인수 타입과 같다.
&, |, ^, %^는 비트 단위로 연산하는 비트 연산자이다. 정수만 피연산자가 될 수 있다. 컴퓨터의 모든 값은 0과 1로 표현되고, 이를 1비트라고 한다.
^를 단독으로 사용하면 비트 반전을 한다.
& = AND
l = OR
^ = XOR
&^ = 비트클리어
&^는 특정비트를 0으로 바꾸는 연산자이다. 우변값에 해당하는 비트를 클리어하는 연산자이다. ^를 먼저 수행하고 나서 &를 수행한다.
가령 10의 하위 2번째를 0으로 바꾼다고 할 때에 먼저 2를 비트반전을 수행하고 10과 2를 비교해서 AND이기 때문에 둘다 1인경우에만 1로 처리시키고 나머지는 0으로 바뀌게 한다. 이런 연산을 통해 결과적으로 2번째 자리만 바뀌게 된다.
비트를 왼쪽 또는 오른쪽으로 밀거나 당기는 연산자이다. << 왼쪽 시프트와 >> 오른쪽 시프트를 지원한다.