22. 쉬프트 연산은 비트 단위로 자리를 이동합니다.
안녕하세요. 언제나 휴일, 언휴예요.
이번 게시글에서는 Go 언어의 쉬프트 연산을 살펴보아요. Go 언어의 쉬프트 연산에는 좌측 쉬프트(<<), 우측 쉬프트(>>)를 제공합니다.
쉬프트 연산은 좌항에 정수 형식이 올 수 있고 우항에는 부호없는 정수 형식이 올 수 있어요.
좌측 쉬프트 연산은 좌항의 값을 우항의 값만큼 비트 자리 이동을 합니다. 예를 들어 3을 왼쪽으로 4자리 이동하면 연산 결과는 48이예요. 십진수 3은 이진수로 11이며 4자리 왼쪽으로 이동하면 이진수 110000, 즉 48이예요.
좌측으로 1자리 이동하면 곱하기 2를 수행한 연산 결과가 같아요. 따라서 좌측으로 n자리 이동하면 2의 n승을 곱한 결과와 같습니다.
우측 쉬프트 연산은 좌측 쉬프트 연산과 역으로 생각하세요. 우측으로 1자리 이동하면 나누기 2를 수행한 연산 결과와 같아요. 따라서 우측으로 n자리 이동하면 2의 n승으로 나눈 결과와 같습니다.
새 프로젝트를 생성하여 논리 연산 표현을 사용해 보아요.
[그림 2] LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가
앞에서 설명했던 비트 연산을 확인하는 코드를 작성하세요.
fmt.Println("3<<4 =", 3<<4) //3X16
fmt.Println("48>>4 =", 48>>4) //48/16
fmt.Println("-3<<4 =", -3<<4) //-3X16
fmt.Println("-48>>4 =", -48>>4)//-48/16
출력 결과는 다음과 같아요.
3<<4 = 48
48>>4 = 3
-3<<4 = -48
-48>>4 = -3
[그림 3] 쉬프트 연산 예제 실행 화면
관련 게시글
[구글 Go 하자] 16. 직관적인 사칙 연산과 비교해 보세요.
[구글 Go 하자] 17. 변수의 값을 특정 범위에서 순환하게 하기
[구글 Go 하자] 18. 자신의 값을 1 증가하거나 감소시키는 증감 연산자
[구글 Go 하자] 19. Go언어에서는 비교 연산자를 사용하는 곳이 많아요.
[구글 Go 하자] 20. Go언어의 논리 연산의 피연산자는 bool 형식만 올 수 있어요.
[구글 Go 하자] 21. 비트 단위로 연산하는 비트 연산자
[구글 Go 하자] 23. 다양한 대입 연산자, 좌항에 상수는 올 수 없어요.
'언어 자료구조 알고리즘 > 구글 Go' 카테고리의 다른 글
[구글 Go 하자] 27. Go 언어 반복문은 for 문, 반복문 탈출은 break (0) | 2016.10.11 |
---|---|
[구글 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 하자] 21. 비트 단위로 연산하는 비트 연산자 (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 |