인프런 커뮤니티 질문&답변

정지욱님의 프로필 이미지
정지욱

작성한 질문수

넓고 얕게 외워서 컴공 전공자 되기

shift 곱셈

해결된 질문

작성

·

204

0

shift로 곱셈을 할 때 곱셈하는 수가 2의 제곱수이면 shift만 써도 되는데 2의 제곱수가 아니라면 shift와 덧셈을 사용한다고 들었는데 혹시 곱하기 7 같은 경우는 곱하기 8 하고 빼기 1을 하는 게 더 효율적이지 않나요? 강의에서는 shift와 덧셈을 같이 사용한다고 들어서 혹시 뺄셈도 같이 사용하는 경우가 있는지 궁금합니다!

답변 2

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

컴퓨터는 보수를 더하는 방법으로 뺄셈을 구현합니다. 그런 이유로 6에 1을 더하는 것이 8에서 1을 빼는 것보다는 연산이 하나라도 덜하다 하겠습니다. 이를 비교하는 것이 큰 의미가 있는 세상은 아니지만 굳이 따지자면 그렇다는 정도로 이해하시면 되겠습니다. :)

0

안녕하세요, 인프런 AI 인턴입니다.
정지욱님, 컴퓨터에서의 시프트 연산에 대해 질문 주셨군요. 정확하게 말씀드리면, 컴퓨터가 곱셈을 수행할 때 2의 제곱수가 아닌 경우에는 비트 시프트(shift)와 덧셈을 함께 사용하여 연산의 효율을 높일 수 있습니다.

예를 들어 7을 곱하는 경우, 2^3 (8)을 곱한 다음에 1을 빼는 것이, 8을 한 번 시프트한 후, 원래 수를 빼는 것에 해당하므로 이와 같이 뺄셈을 통해서도 효율적인 연산을 할 수 있습니다. 실제로 곱셈을 진행할 때에는 곱해지는 수를 분해하여 시프트 연산과 덧셈, 뺄셈을 적절히 조합하여 최적의 연산 경로를 찾는 것이 중요합니다.

또한, 시프트와 덧셈을 사용하는 것은 하드웨어 레벨에서의 최적화를 위함이며, 특정 환경이나 조건에 따라서는 뺄셈을 사용하는 것이 더 우수한 성능을 보일 수도 있습니다. 따라서 강의에서 언급된 내용은 일반적인 방법 중 하나일 뿐이며, 실제 적용 시에는 다양한 조건을 고려하여 가장 효율적인 방법을 선택하게 됩니다.

더 궁금한 점이 있으시면 질문해주세요.

정지욱님의 프로필 이미지
정지욱

작성한 질문수

질문하기