• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    해결됨

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가 아닌가요?

제가 어떤 부분을 이해를 못하고 있는 것인지 궁금합니다.

 

감사합니다.

 

답변 2

·

답변을 작성해보세요.

1

헉. 잘못남겨서 수정하고 있었습니다.

빠른 답변 주셔서 감사합니다.

제가 인프런 화면을 보고 있었던 터라... 답을 너무 빨리 달았나 보네요. ^^;;;

1

네, 2진수 0101을 왼쪽으로 2회 쉬프트할 경우 * 4를 한 것과 같습니다. 따라서 결과는 20이 되어야 합니다. 다만 20은 4비트로 표현할 수 있는 최대 숫자인 15를 초과합니다. 0101 왼쪽으로 2회 쉬프트 하면 2진수 10100이 되어야 하겠으나 4비트 범위를 벗어난 1에 대해 '잘림'이 발생합니다. 이 때문에 2진수 0100이 되고 10진수로는 4가 되겠습니다.

만일 8비트 환경이라면 2진수 00010100이 됐을 것이고 잘림은 발생하지 않아 정확히 20이 됐을 것입니다. 참고하시기 바랍니다.