-
카테고리
-
세부 분야
기타 (개발 · 프로그래밍)
-
해결 여부
해결됨
CPU가 곱하고 나누는 방법 질문
23.01.03 14:13 작성 23.01.03 14:18 수정 조회수 336
1
안녕하세요. :-)
강의 너무 잘 듣고 있습니다.
사소하지만 곱셈에 대해 궁금한 부분이 있습니다.
4비트로 표현한 5인 0101을
왼쪽으로 한칸씩 밀고(shift)
맨 오른쪽에 0이 채워지면(padding)
결과가 1010으로 10이 되고
이처럼 한 칸을 밀면 곱하기 2를 한 것과 같은 것은 이해를 하였는데요.
교안에 따라 4비트로 표현한 5인 0101을 두 칸을 밀면,
곱하기 4로 20이 될것으로 기대했는데,
결과적으로는 0100으로 4가 아닌가요?
제가 어떤 부분을 이해를 못하고 있는 것인지 궁금합니다.
감사합니다.
답변을 작성해보세요.
1
1
널널한 개발자
지식공유자2023.01.03
네, 2진수 0101을 왼쪽으로 2회 쉬프트할 경우 * 4를 한 것과 같습니다. 따라서 결과는 20이 되어야 합니다. 다만 20은 4비트로 표현할 수 있는 최대 숫자인 15를 초과합니다. 0101 왼쪽으로 2회 쉬프트 하면 2진수 10100이 되어야 하겠으나 4비트 범위를 벗어난 1에 대해 '잘림'이 발생합니다. 이 때문에 2진수 0100이 되고 10진수로는 4가 되겠습니다.
만일 8비트 환경이라면 2진수 00010100이 됐을 것이고 잘림은 발생하지 않아 정확히 20이 됐을 것입니다. 참고하시기 바랍니다.
답변 2