11. 메모리, 10진수, 2진수, 16진수

프로그램의 메모리의 최소 단위는 비트죠.
그리고 하나의 비트에는 0과 1을 표현할 수 있구요.
이러한 특징때문에 메모리에 있는 데이터를 표현할 때 2진수로 나타내는 것이 편리해요.

예를 들어 8비트의 메모리에 10110111 값이 있을 때 이진수로 생각해 보세요.
이를 10진수로 나타내면 128X1+64X0+32X1+16X1+8X0+4X1+2X1+1X1 = 183 입니다.

이진수 자릿값
이진수 자릿값

큰 정수를 이진수로 나타내는 것은 계산하는 시간이 많이 들겠죠.
그리고 효과적으로 계산하기 위해 4비트를 하나의 16진수로 나타내는 방법도 자주 사용해요.

예를 들어 8비트의 메모리에 10110111 값이 있다면 1011 과 0111로 구분하세요.
그리고 1011은 16진수 B로 0111은 16진수 7로 나타내는 것이죠.
따라서 이진수 10110111을 16진수로 표현하면 B7이예요.
이를 10진수로 나타내면 16X11 + 7 = 183 이 나와요.

진수 표현
진수 표현

그리고 전산에서 16진수를 표현할 때 0xB7 처럼 앞에 숫자 0과 문자 x를 추가로 표기하죠.
따라서 0x14 는 16진수 14를 의미하며 10진수로 계산하면 16X1 + 4 = 20 이예요.

프로그램의 메모리는 바이트(8비트) 단위로 메모리 주소를 부여한다고 했어요.
따라서 1 바이트에 있는 데이터를 이진수로 나타내면 8자리가 필요하고 16진수로 나타내면 2자리로 표현할 수 있어요.

이번에는 메모리 크기에 따라 표현할 수 있는 데이터 가지수를 알아볼게요.

1비트는 0과 1 두가지를 표현할 수 있죠.
그리고 2비트는 00, 01, 10, 11 네가지를 표현할 수 있어요.
3비트는 000~111 까지 8가지를 표현할 수 있어요.
따라서 n 비트로 표현할 수 있는 데이터는 2의 n승(2를 n번 곱한 수)가지예요.
그리고 1바이트는 8비트이므로 2의 8승인 256가지를 표현할 수 있어요.

◈ 기본 연습(정답)

1. 2진수 01010010은 10진수로 얼마인지 계산하시오.

2. 2진수 01010010은 16진수로 얼마인지 계산하시오.

3. 16진수 0x52는 10진수로 얼마인지 계산하시오.

4. 10진수 37을 이진수로 얼마인지 계산하시오.

5. 16진수 0x25를 이진수로 얼마인지 계산하시오.

6. 10비트로 표현할 수 있는 데이터 가지수는?

7. 4바이트 메모리의 데이터를 2진수로 나타내기 위해 필요한 자리수는?

8. 4바이트 메모리의 데이터를 16진수로 나타내기 위해 필요한 자리수는?