• 이 글은 골든래빗 《Tucker의 Go 언어 프로그래밍》의 6장 써머리입니다.
- 비트 단위로 연산. 정수만 피연산자 가능. 컴퓨터의 0,1이 1비트
- & (AND) : 2진수 계산. A, B 모두 1일 때 A&B = 1
하나라도 0이면 0- | (OR) : 하나라도 1이면 1.
- ^ (XOR) : A와 B가 다르면 1
- &^ (비트클리어) : 특정 비트를 0으로 바꾸는 연산자.
- 오른쪽 혹은 왼쪽으로 비트를 밀거나 당기는 연산자
- << (왼쪽시프트)
오른쪽 피연산자만큼 왼쪽으로 비트를 밀어냄
비트가 이동되어 빈자리는 0으로 채워지고, 자릿수를 벗어난 비트는 버려짐- >> (오른쪽시프트)
비트값을 오른쪽으로 밀어냄. 왼쪽에 추가되는 비트는 최상위 비트값과 같은 비트값이 추가됨. 음수라면 1, 양수라면 0으로 채워짐.
👉 주의할 점
- 정수 오버플로
정수가 정수 타입의 범위를 벗어난 경우 값이 비정상으로 변화하는 현상
- 정수 언더플로
오버플로와 반대로 정수 타입이 표현할 수 있는 가장 작은 값에서 -1 했을 때는 가장 큰 값으로 바뀜var a int8 = -128 a -1 = 127 // -129가 아니다. : 언더플로
Nextafter() 함수 사용
import "math" func Nextafter(x, y float64) (r float64) func equal(a, b float64) bool { return math.Nextafter(a, b) == b } func main(){ var a float64 = 0.1 var b float64 = 0.2 var c float64 = 0.3 fmt.Print("%0.18f == %0.18f : %v\n",c,a+b,equal(a+b,c)) } // 콘솔 // 0.29999999999999989 == 0.300000000000044 : true // 엄청 작은 오차가 있지만, 1비트 단위로 무시하였기 때문에 true로 >출력
- 대입 연산자
var a int a = 10
- 복수 대입 연산자
var a, b int = 3, 4
- 복합대입연산자
var a = 10 a = a+2 a += 2
- 증감 연산자
var a int = 10 // a 값을 모두 1씩 증가 a = a+1 a += 1 a ++ // a 값을 모두 1씩 감소 a = a-1 a -= 1 a --