컴퓨터 산술
정수 x를 10배 하는 계산을 곱셈 명령을 쓰지 않고 시프트와 덧셈으로 수행하는 식으로 올바른 것은 무엇입니까?
- A(x << 3) + (x << 1)
- B(x << 10)
- C(x << 2) + x
정답과 해설 보기
정답: A. (x << 3) + (x << 1)
왼쪽으로 1비트 이동하면 2배가 되므로 x << 3은 8배, x << 1은 2배입니다. 8x + 2x = 10x이므로 (x << 3) + (x << 1)로 10배를 계산할 수 있습니다. 상수를 곱하는 곱셈은 이처럼 시프트와 덧셈의 조합으로 바꿀 수 있고, 컴파일러도 빠른 쪽을 골라 사용합니다. x << 10은 2¹⁰ = 1024배, (x << 2) + x는 4x + x = 5배가 됩니다. 시프트 비트 수를 10배와 혼동하지 않도록 주의해야 합니다.