해결된 질문
작성
·
424
·
수정됨
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이 됐을 것입니다. 참고하시기 바랍니다.
제가 인프런 화면을 보고 있었던 터라... 답을 너무 빨리 달았나 보네요. ^^;;;