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) 아스키 코드 (ASCII)를 사용하여 문자를 표현함

(5) 예제

□A□ → 01000001 로 표현

□Q□ → 01010001 로 표현

(6) ASCII = American Standard Code for Information Interchange

(부록 B 또는 과목게시판 참조)

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, ....

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

메모리의 크기

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

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

★ 용어

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

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

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

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

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

★ 진수 변환

- 1자리 16진수는 모두 4자리 2진수 1개와 대응할 수 있음.

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

예)  00001111B = 0FH

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

예) 10011010110101101B → 135ADH

★ 16진수를 2진수로 변환하는 법: 16진수의 각 자릿수를 같은 값을 갖는 4 비트 짜리 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

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

2진수의 10진수로의 변환

예) 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

10진수의 2진수로의 변환

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

16진수의 덧셈

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

28A70

+  90B6

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

31B26

답: 31B26H

16진수의 뺄셈

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

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

DB4

-  2A1

----------

B13	답: B13H

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

74A

- 2EF

-----------

45B	답: 45BH