21. 비트 단위로 연산하는 비트 연산자
안녕하세요. 언제나 휴일, 언휴예요.
이번 게시글에서는 Go 언어의 비트 연산을 살펴보아요. Go 언어의 비트 연산에는 비트 AND(&), 비트 OR(|), 비트 XOR(^), 비트 clear(&^)를 제공합니다.
비트 연산은 피연산자로 정수 형식이 올 수 있으며 비트 단위로 연산을 수행해요.
예를 들어 6과 5를 비트 AND 연산을 수행하면 비트 단위로 연산하여 연산 결과는 4가 나와요. 6은 이진수로 ...110이고 5는 이진수로 ...101이죠. 따라서 같은 자리의 비트끼리 AND 연산을 수행하면 이진수로 ...100, 즉 4입니다.
만약 6과 5를 비트 OR 연산을 수행하면 연산 결과는 7이예요. 이진수 110과 이진수 101을 같은 자리의 비트끼리 OR 연산을 하면 이진수로 111, 즉 7입니다.
6과 5를 비트 XOR 연산을 수행하면 연산 결과는 3이예요. XOR는 같은 자리의 비트가 같은 값이면 0으로 다른 값이면 1로 처리하는 연산이예요. 이진수 110과 이진수 101을 같은 자리의 비트끼리 XOR 연산을 하면 이진수로 011, 즉 3입니다.
6과 5를 비트 clear연산을 수행하면 연산 결과는 2입니다. clear는 우항에 1인 자리일 때 좌항의 해당 자리를 0으로 설정하는 연산이예요. 이진수 110에서 이진수 101의 1인 자리를 0으로 처리하면 이진수 010, 즉 2입니다.
새 프로젝트를 생성하여 논리 연산 표현을 사용해 보아요.
[그림 4] LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가
앞에서 설명했던 비트 연산을 확인하는 코드를 작성하세요.
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] 비트 연산 예제 실행 화면
관련 게시글
[구글 Go 하자] 16. 직관적인 사칙 연산과 비교해 보세요.
[구글 Go 하자] 17. 변수의 값을 특정 범위에서 순환하게 하기
[구글 Go 하자] 18. 자신의 값을 1 증가하거나 감소시키는 증감 연산자
[구글 Go 하자] 19. Go언어에서는 비교 연산자를 사용하는 곳이 많아요.
[구글 Go 하자] 20. Go언어의 논리 연산의 피연산자는 bool 형식만 올 수 있어요.
[구글 Go 하자] 22. 쉬프트 연산은 비트 단위로 자리를 이동합니다.
[구글 Go 하자] 23. 다양한 대입 연산자, 좌항에 상수는 올 수 없어요.
'언어 자료구조 알고리즘 > 구글 Go' 카테고리의 다른 글
[구글 Go 하자] 26. 엄격한 폼을 요구하는 if 조건문 (0) | 2016.10.08 |
---|---|
[구글 Go 하자] 25. 표준 입력 함수 Scanln, Scan, Scanf 사용하기 (0) | 2016.10.03 |
[구글 Go 하자] 24. 표준 출력 함수 Println, Print, Printf 사용하기 (0) | 2016.06.03 |
[구글 Go 하자] 23. 다양한 대입 연산자, 좌항에 상수는 올 수 없어요. (0) | 2016.06.01 |
[구글 Go 하자] 22. 쉬프트 연산은 비트 단위로 자리를 이동합니다. (0) | 2016.06.01 |
[구글 Go 하자] 20. Go언어의 논리 연산의 피연산자는 bool 형식만 올 수 있어요. (0) | 2016.06.01 |
[구글 Go 하자] 19. Go언어에서는 비교 연산자를 사용하는 곳이 많아요. (0) | 2016.05.30 |
[구글 Go 하자] 18. 자신의 값을 1 증가하거나 감소시키는 증감 연산자 (0) | 2016.05.30 |
[구글 Go 하자] 17. 변수의 값을 특정 범위에서 순환하게 하기 (0) | 2016.05.30 |
[구글 Go 하자] 16. 직관적인 사칙 연산과 비교해 보세요. (0) | 2016.05.30 |