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

긴장한 도미님의 프로필 이미지
긴장한 도미

작성한 질문수

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

CPU가 곱하고 나누는 방법

CPU가 곱하고 나누는 방법 질문

해결된 질문

작성

·

427

·

수정됨

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이 됐을 것입니다. 참고하시기 바랍니다.

긴장한 도미님의 프로필 이미지
긴장한 도미

작성한 질문수

질문하기