C H A P T E R

2
ㅔ

수의 체계

공부할 내용

- 비트, 바이트

- 문자 저장 방식

- 2, 8, 10, 16진법

- 숫자의 진법간의 변환

- 16진수의 덧셈과 뺄셈

비트와 바이트

(1) 컴퓨터의 메모리에 저장되어 있는 정보

100100110110010111001001000100010011101011...

(2) 비트(bit) : 0 또는 1

(3) 바이트(byte) : 8비트의 묶음   (예: 01101001 )

(4) 워드(word): 컴퓨터의 프로세서 종류에 따라서 다름

80286에서는 16비트 (2바이트)가 1워드임

(5) 더블워드 (doubleword): 4 바이트

(6) 쿼드워드(quadword): 8바이트

(7) 패러그래프(paragraph): 16바이트

문자 저장 방식

(1) 문자: a, b, c, ... , 1, 2, 3, ... , !, @, #, .....

(2) 1문자의 저장: 1 바이트를 사용함

(3) 1 바이트를 사용하여 표현할 수 있는 문자의 개수

[eqn: = 2 times 2 times 2 times 2 times 2 times 2 times 2 times 2 = 256~]

(4) 예제

□A□ => 0100001 로 표현

□Q□ => 01010001 로 표현

(5) 아스키 코드 (ASCII)를 사용하여 문자를 표현함

(6) ASCII = American Standard Code for Information Interchange

= 미국 정보 교환 표준 코드 (부록 B 참조, 512 - 519쪽)

2진법

(1) 10진법 (decimal system) : 0, 1, 2, ... , 8, 9를 사용한 숫자 표현법

(2) 2진법 (binary system), 또는 베이스 2 (base 2) : 0 과 1 만 사용

- 컴퓨터에서 사용됨 (표 2-2 참조)

(3) 10진법에서 수를 세려면:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9까지 센 후에, 그 자리는 다시 0이 된다.

0이 될 때마다 바로 왼편의 자릿수에 1을 더한다.

(4) 2진법에서 수를 세려면: 10진법에서와 같은 원리를 사용

0, 1 까지 센 후에, 그 자리는 다시 0이 된다. 0이 될 때마다 바로    왼편의 자릿수에 1을 더한다.

예) 0, 1, 10, 11, 100, 101, 110, 111, 1000, ....

	표 2-2			10진수와 그에 대응되는 2진수

10진수	2진수
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15	0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111

16진법

★ 2진법의 장점

- 저장되어 있는 숫자상에서 그대로 작업할 수 있다.

2진법의 단점

- 길이가 길어서 사용하기가 쉽지 않다.

★ 예

125 + 75 = 200 (10진법으로 표현됨, 이해하기 쉽다)

1111101B + 1001011B = 11001000B (2진법으로 표현됨, 이해하기 힘듬)

★ 16진법(hexadecimal system), 또는 베이스 16 (base 16)(10진수처럼)

- 간결하면서 (2진수처럼) 메모리의 값을 그대로 보여주는 수의 체계

- 한 자리수에 16개의 숫자를 사용 (0, 1, 2, ... , 9, A, B, C, D, E, F)

	표 2-3			동일한 값을 갖는 10진수, 2진수와 16진수

10진수	2진수	16진수
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20	0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 10010 10011 10100	0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14

숫자에 진법을 나타내고자 할 때

★ 16진수: 숫자뒤에 □H□를 첨가하여 16진수임을 표시함.

예: 1D70H

★ 2진수: 숫자뒤에 □B□를 첨가하여 2진수임을 표시함.

예: 101100B

	표 2-5			2진법의 각 자릿수

2진수	대응되는 10진수의 값	2의 거듭제곱
1000 1000000 100000000 10000000000	8 64 256 1024	23 26 28 210

	표 2-6			16진법의 각 자릿수

16진수	대응되는 10진수의 값	16의 거듭제곱
10 100 1000 8000 10000	16 256 4096 32768 65536	161 162 163 8×163 164

	표 2-7			다른 중요한 2진수들

2진수	대응되는 10진수의 값	2의 거듭제곱
1111 111111 11111111 1111111111	15 63 255 1023	24 - 1 26 - 1 28 - 1 210 - 1

	표 2-8			다른 중요한 16진수들

16진수	대응되는 10진수의 값	16의 거듭제곱
F FF 7FFF FFFF	15 255 32767 65535	161 - 1 162 - 1 8 × 163 - 1 164 - 1

메모리의 크기

★ 컴퓨터가 처리하는 자료의 단위: 바이트

따라서 메모리의 크기 = 메모리의 바이트 수

★ 용어

- 1 킬로바이트(kilobyte) = 1024(210) 바이트  (약 1천 바이트)

- 1 메가바이트(megabyte) = 1048576(220) 바이트 (약 100만 바이트)

- 64 킬로바이트 = 64K bytes = 64 KB

1 메가바이트 = 1M bytes = 1 MB

2진수와 16진수 사이의 변환

★ 표 2-9를 보면

- 0F와 1F 사이의 1자리 16진수는 모두 4자리 2진수 1개와 대응됨.

- 모든 4자리 2진수도 1자리 16진수 1개로 표현됨.

★ 모든 2진수는 그 수보다 길이가 짧은 16진수 1개로 나타낼 수 있다.     예)  00001111B = 0FH

★ 2진수를 16진수로 변환하는 법: 2진수를 오른쪽 끝으로부터 시작하여 비트를 4개씩 모아 그룹으로 만들고 4비트로 된 각 그룹을 1개의 대응되는 16진수로 바꾼다.

	표 2-9			16진수와 동등한 값을 갖는 2진수

16진수	2진수
0 1 2 3 4 5 6 7 8 9 A B C D E F	0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

★ 2진수를 16진수로 변환하는 예제

예) 2진수인 10011010110101101B를 16진수로 변환해보자

(1) 16진수를 오른쪽 끝으로부터 시작하여 4비트씩 모아 그룹을 만듬

1 0011 0101 1010 1101

(2) 3개의 0을 왼편 끝에 추가하여 모든 그룹이 4비트씩 되도록 한다.

0001 0011 0101 1010 1101

(3) 표 2-9를 이용하여 각 비트 그룹에 대응되는 16진수를 찾아서

각 그룹 밑에 쓴다.

0001 0011 0101 1010 1101

1    3    5     A   D

답: 10011010110101101B = 135ADH

★ 16진수를 2진수로 변환하는 법: 16진수의 각 자릿수를 같은 값을 갖는 4 비트 짜리 2진수로 대치한다.

★ 예제) 72AD2EH를 2진수로 변환하여 보자.

(1) 먼저 각 자릿수를 떼어 쓴다.

7  2  A  D  2  E

(2) 각 숫자와 동등한 값을 가지는 4비트짜리 2진수를 표 2-9에서

찾아 각 숫자 아래에 쓴다.

7    2    A   D    2   E

0111 0010 1010 1101 0010 1110

(3) 쓰여진 비트를 붙여서 2진수를 만든다.

답: 72AD2EH = 011100101010110100101110B

16진수의 10진수로의 변환

예) 10진수인 50786을 16진수로 변환하여 보자:

50786의 값 = 6 + 8 × 10 + 7 × 100 + 0 × 1000 + 5 × 10000

= 6 + 8 × 10 + 7 × 102 + 0 × 103 + 5 × 104

AD65H 의 값 = 5 + 6 × 16 + 13 × 162 + 10 × 163

= 5 + 6 × 16 + 13 × 256 + 10 × 4096

= 44389

★ 16진수를 10진수로 변환하는 절차

1.16진수의 가장 오른편 자리에 있는 숫자로부터 시작하여 각 숫자 에 적절한 16의 거듭제곱인 수를 곱하고 만들어진 모든 수를 더하는 형식으로 바꾸어 쓴다. 각 자리에 있는 숫자가 AH, BH, CH, DH, EH, FH인 경우에는 이들 대신에 10, 11, 12, 13, 14, 15를 사용한다.

2.16의 거듭제곱에 대응되는 10진수 값을 표 2-10에서 찾아서 식에 대입한다.

3.각 항을 더하여 그 값을 계산한다.

10진수의 16진수로의 변환

방법: 1. 10진수를 16으로 계속하여 나눈다.

2. 16진수의 각 자릿수를 얻으려면 나눗셈의 나머지들을 오른쪽으

로부터 왼쪽 방향으로 써가면 된다.

3. 나머지가 10, 11, 12, 13, 14, 15 중의 하나이면 이 들을 각각

AH, BH, CH, DH, EH와 FH로 바꾸어 쓴다.

예) 14855를 16진수로 변환하여 보자.

1. 14855 / 16 => 몫 = 928   나머지 = 7

2. 928 / 16 => 몫 = 58 나머지 = 0

3. 58 / 16 => 몫 = 3 나머지 = 10

4. 3/ 16 => 몫 = 0 나머지 = 3

5. 지금까지 생성된 나머지를 오른편으로부터 왼쪽 방향으로 씀.

3 10 0 7  ===> 3A07H

원리 :  (1)  (7 + 0 × 16 + 10 × 162 + 3 × 163) / 16

= 0 + 10 × 16 + 3 × 162  (나머지 = 7)

(2) (0 + 10 × 16 + 3 × 162 ) / 16

= 10 + 3 × 16  (나머지 = 0 )

(3) (10 + 3 × 16) / 16

= 3  (나머지 = 10 )

(4) 3 / 16 = 0 (나머지 = 3)

2진수의 10진수로의 변환

방법: 1. 2진수의 각 자릿수에 적당한 2의 거듭제곱을 곱한 후에

각각을 더한 형태로 다시 쓴다.

2. 그 식을 계산하면 된다.

예) 10110011B는 다음과 같이 쓸 수 있다.

1 + 1 × 2 + 0 × 22 + 0 × 23 + 1 × 24 + 1 × 25 + 0 × 26 + 1 × 2 7

= 1 + 1 × 2 + 0 × 22 + 0 × 23 + 1 × 24 + 1 × 25 + 0 × 26 + 1 × 27

= 1 + 1 × 2 + 0 × 4 + 0 × 8 + 1 × 16 + 1 × 32 + 0 × 64 + 1 × 128

= 179

	표 2-11			2의 거듭제곱 수

2의 거듭제곱 수	대응되는 10진수의 값
20 21 22 23 24 25 26 27 28 29 210 211 212 213 214 215	1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768

10진수의 2진수로의 변환

방법: 즉, 2로 계속하여 나눈 후에 나머지를 오른쪽에서부터 써간다.

예)  23406을 2진수로 변환하여 보자.

(1) 23406을 2로 계속하여 나눈다

23406 / 2 =>	몫 = 11703	나머지 = 0

11703 / 2	=> 몫 = 5851	나머지 = 1

........

2 / 2	=> 몫 = 1	나머지 = 0

1 / 2	=> 몫 = 0	나머지 = 1

(2) 나머지를 오른쪽에서 왼쪽 방향으로 써 가면 된다.

즉, 23406 = 101101101101110B

16진수의 덧셈

예) 28A70H와 90B6H를 더하여 보자.

(1) 평소에 10진수 덧셈을 할 때와 같이 두 숫자를 나란히 한 열에 쓴다.

28A70

+  90B6

--------------

(2) 오른쪽으로부터 왼쪽을 향하여 각 열을 더해 간다.

28A70

+  90B6

--------------

6

(3) 다음, 7H + BH는 12H이다.

2를 두 번째 열에 쓰고 16진수인 1이 다음 자리로 올라간다.

28A70

+  90B6

--------------

26

(4) 다음, AH + 0H + 1H (둘째 자리에서 올라온 값)은 BH이다.

□B□를 세 번째 열에 쓴다.

28A70

+  90B6

--------------

B26

(5) 다음, 8H + 9H는 11H이다.

□1□을 4번째 열에 쓰고, 16진수인 1이 다음 자리로 올려진다.

28A70

+  90B6

--------------

1B26

(6) 마지막으로, 2H + 1H (4째 자리에서 올라온 값)은 3H이다.

□3□을 5번째 열에 쓴다.

28A70

+  90B6

--------------

31B26

28A70H + 90B6H의 계산 결과는 31B26H이다.

16진수의 뺄셈

★ 10진수 뺄셈을 할 때와 같은 방법을 쓴다.

예)  DB4H - 2A1H를 계산하여 보자.

(1) 두 숫자를 평소에 뺄셈할 때와 같이 아래로 나란히 쓴다.

DB4

- 2A1

----------

(2) 오른쪽으로부터 왼쪽 방향으로 뺄셈을 하여 간다.

먼저 4H - 1H는 3H이다. □3□을 첫째 열의 맨 아래에 쓴다.

DB4

-  2A1

----------

3

(3) 다음, BH - AH는 1H이다. □1□을 둘째 열 아래에 쓴다.

DB4

-  2A1

-----------

13

(4) 마지막으로, DH - 2H는 BH이다. □B□를 셋째 열 아래에 쓴다.

DB4

-  2A1

----------

B13

즉, DB4H - 2A1H의 계산 결과는 B13H가 된다.

예제 2) 74AH - 2EFH를 계산하여 보자.

(1) 먼저 문제를 아래와 같은 형태로 바꾸어 쓴다.

74A

- 2EF

----------

(2) 첫째, AH에서 FH를 빼야 한다. ― 그러나 FH가 AH보다 크다.

(16진수) 1을 바로 왼편의 자리에서 빌려 와서 1AH를 만든다.

이제 1AH - FH를 계산한다. 1AH - FH는 BH가 된다.

□B□를 첫째 열 아래에 쓴다.

74A

-  2EF

----------

B

(3) 다음은 4H - EH - 1H (오른쪽 자리에 빌려준 값)을 계산해야

한다. 또 한번 왼쪽 자리에서 자리에서 1을 빌려 와야 한다.

74A

- 2EF

---------

5B

(4) 마지막으로 7H - 2H - 1H (오른쪽 자리에 빌려준 값)을

계산한다. 답은 4H이다. □4□를 세 번째 열 아래에 쓴다.

74A

- 2EF

---------

5B

즉, 74AH - 2EFH의 답은 45BH이다.

Chapter 2: 수의 체계