[Go 언어] 21. 비트 단위로 연산하는 비트 연산자

안녕하세요. 언제나 휴일, 언휴예요.

이번 게시글에서는 Go 언어의 비트 연산을 살펴보아요. Go 언어의 비트 연산에는 비트 AND(&), 비트 OR(|), 비트 XOR(^), 비트 clear(&^)를 제공합니다.

비트 연산은 피연산자로 정수 형식이 올 수 있으며 비트 단위로 연산을 수행해요.

예를 들어 6과 5를 비트 AND 연산을 수행하면 비트 단위로 연산하여 연산 결과는 4가 나와요. 6은 이진수로 …110이고 5는 이진수로 …101이죠. 따라서 같은 자리의 비트끼리 AND 연산을 수행하면 이진수로 …100, 즉 4입니다.

6 & 5

만약 6과 5를 비트 OR 연산을 수행하면 연산 결과는 7이예요. 이진수 110과 이진수 101을 같은 자리의 비트끼리 OR 연산을 하면 이진수로 111, 즉 7입니다.

6 | 5 = 7

6과 5를 비트 XOR 연산을 수행하면 연산 결과는 3이예요. XOR는 같은 자리의 비트가 같은 값이면 0으로 다른 값이면 1로 처리하는 연산이예요.  이진수 110과 이진수 101을 같은 자리의 비트끼리 XOR 연산을 하면 이진수로 011, 즉 3입니다.

6^5=3

6과 5를 비트 clear연산을 수행하면 연산 결과는 2입니다. clear는 우항에 1인 자리일 때 좌항의 해당 자리를 0으로 설정하는 연산이예요.  이진수 110에서 이진수 101의 1인 자리를 0으로 처리하면 이진수 010, 즉 2입니다.

새 프로젝트를 생성하여 논리 연산 표현을 사용해 보아요.

[그림 4] LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가
// Example 비트 연산
package main
 
import "fmt"
 
func main() {
    fmt.Println("6 & 5 =", 6&5)
    fmt.Println("6 | 5 =", 6|5)
    fmt.Println("6 ^ 5 =", 6^5)
    fmt.Println("6 &^ 5 =", 6&^5)
}

앞에서 설명했던 비트 연산을 확인하는 코드를 작성하세요.

  • 6과 5의 비트 연산
    fmt.Println("6 & 5 =", 6&5)
    fmt.Println("6 | 5 =", 6|5)
    fmt.Println("6 ^ 5 =", 6^5)
    fmt.Println("6 &^ 5 =", 6&^5)

출력 결과는 다음과 같아요.

6 & 5 = 4
6 | 5 = 7
6 ^ 5 = 3
6 &^ 5 = 2
[그림 5] 비트 연산 예제 실행 화면