해결된 질문
작성
·
63
0
컴퓨터가 곱셈을 하는 방법으로 4bit를 왼쪽으로 한 칸 밀면 곱하기 2, 두 칸 밀면 곱하기 4가 된다고 하셨는데 pdf에서 예시로 사용하신 0101은 16진수로 5입니다.
왼쪽으로 한 칸 밀고 맨 오른쪽에 0을 채워넣고 자리올림은 버리면 1010 즉 16진수로 10입니다.
이를 한 번 더 왼쪽으로 밀면 0100 즉 16진수로 4가됩니다.
5 * 4인 20이 나와야하는거 아닌가요?
답변 2
0
만일 4비트가 최대라면 오버플로우가 발생합니다. 그러나 8비트에서는 00010100이라 생각할 수 있겠습니다. 이렇게 되면 16 + 4가 되므로 20이 됩니다. 2진수를 16진수로 바꿀 때 4비트씩 끊어서 생각하지만 이는 데이터를 단지 4비트 단위로 묶은 것일 뿐 데이터 그 자체의 길이와 무관합니다. 즉, 4비트 0101은 5가 되고 0001 0100은 0x14가 됩니다. 참고하시기 바랍니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다.
이 질문은 컴퓨터가 곱셈을 수행하는 방법에 대한 이해를 돕는데, 특히 2진수의 비트를 왼쪽으로 이동시키는 것이 곱셈과 어떻게 연관되는지에 대해 질문하고 있습니다. 다행히, 이와 관련하여 CPU가 곱하고 나누는 방법 질문 에서 비슷한 주제에 대한 설명이 제공되었습니다.
질문자님이 언급하신 과정에 대해 살펴보면, 4비트로 표현된 수 ‘0101’ (10진수로 5)를 왼쪽으로 한 칸 밀면 ‘1010’ (10진수로 10)이 되고, 이 과정에서 실제로 곱하기 2가 된 것을 확인할 수 있습니다. 추가적으로, 이 숫자를 한 번 더 왼쪽으로 밀면 2진수로 ‘0100’이 됩니다만, 이는 실제로는 4비트의 한계로 인해 발생하는 오해입니다.
4비트 환경에서 ‘0101’을 4배 곱하려고 할 때 ‘20’이라는 결과는 표현할 수 없습니다. 왜냐하면 4비트로는 최대 ‘1111’ (10진수로 15)까지만 나타낼 수 있기 때문입니다. 따라서, 20을 표현하기 위해서는 더 많은 비트가 필요합니다. 이 때문에 실제 연산 과정에서는 ‘10100’으로 나타나야 맞으나, 4비트로는 ‘0100’만을 표현할 수 있고, 결과적으로 10진수 4가 됩니다.
질문하신 곱셈 과정을 이해하는 데 있어 가장 중요한 포인트는 비트의 이동이 곱셈에 영향을 미치긴 하지만, 사용하는 비트의 수가 결과의 정확도를 제한할 수 있다는 점입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.