6.1.1 연산의 결과 타입


go 언어에서 모든 연산자의 각 항의 타입은 항상 같아야 한다.(시프트 연산은 제외)그래서 타입 변환을 통해서 타입을 같도록 맞춰준 다음에 연산해야 한다. 또 연산의 결과 타입도 인수 타입과 같다.

6.1.2 비트연산자


&, |, ^, %^는 비트 단위로 연산하는 비트 연산자이다. 정수만 피연산자가 될 수 있다. 컴퓨터의 모든 값은 0과 1로 표현되고, 이를 1비트라고 한다.

^를 단독으로 사용하면 비트 반전을 한다.

& = AND

l = OR

^ = XOR

&^ = 비트클리어

&^는 특정비트를 0으로 바꾸는 연산자이다. 우변값에 해당하는 비트를 클리어하는 연산자이다. ^를 먼저 수행하고 나서 &를 수행한다.

가령 10의 하위 2번째를 0으로 바꾼다고 할 때에 먼저 2를 비트반전을 수행하고 10과 2를 비교해서 AND이기 때문에 둘다 1인경우에만 1로 처리시키고 나머지는 0으로 바뀌게 한다. 이런 연산을 통해 결과적으로 2번째 자리만 바뀌게 된다.

6.1.3 시프트 연산자


비트를 왼쪽 또는 오른쪽으로 밀거나 당기는 연산자이다. << 왼쪽 시프트와 >> 오른쪽 시프트를 지원한다.