Ⅱ. 정보의 표현 1. 진수 변환 2. 2진수의 연산 3. 실수의 표현 ■ 단원 학습 정리 1. 10진수와 2진수 2. 8진수와 16진수 1. 사칙 연산 2. 보수의 개념과 음수 1. 실수 14 16 25 26 35 51 3. 2진수, 8진수와 16진수 4. 디지털 코드 1. 2진 숫자 코드 2. 2진 문자 코드 39 46 3. 한글 코드 4. 유니 코드 48 50 20 ■ 단원종합 문제
1. 진수 변환 학 습 목 표 1. 여러가지 진수의 원리 및 특징을 설명할 수 있다. 2. 디지털 시스템에서 2진수를 사용해야 하는 이유를 설명할 수 있다. 3. 10진수, 2진수, 8진수, 16진수 사이 변환을 설명할 수 있다. 1. 10진수와 2진수 우리가 현재 쓰고 있는 10진법(decimal number system) 에서는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9의 10개의 숫자를 사용하는 데 이것은 우리의 손가락이 왼쪽, 오른쪽 5개씩 10개가 있으므로 생겨났다고 할 수 있다. 2진법은 전자 회로에서 2개의 안정된 값을 표현할 수 있는 방법(트랜지스터의 ON, OFF)을 쉽게 이용할 수 있다. 진법을 이용한 표현방법 1 1 1310 = 1 x 101 + 3 x 100 1 158 = 1 x 81 + 5 x 80 3 11012 = 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 2 D16 = 13 x 160 4 진법을 이용한 표현방법 2 2 10진수의 365.25는 1 365.2510 = 3 x 102 + 6 x 101 + 5 x 100 + 2 x 10-1 + 5 x 10-2 2진수 1010.101의 경우 2 1010.1012 = 1 x 23 + 0 x 22 + 1 x 21 + 0 x 20 + 1 x 2-1 + 0 x 2-2 + 1 x 2-3
★ 진법의 변환 1 10진수 → 2진수변환 2 2진수 → 10진수변환 10진수를 2진수로 바꾸는 방법은 주어진 10진수를 2로 나누어 몫과 나머지를 구하고 그 몫이 0이 될 때 까지 그 과정을 반복한 수 구해진 나머지를 역순으로 써 나가는 것이다. ▶ 10진수 55를 2진수로 변환 하시오.. 2진수 → 10진수변환 2 ▶ 2진수 각자리의 가중치를 이용하여 변환할 수 있다. 1101012 의 2진수를 10진수로 변환하면 1101012 = 1 x 25 + 1 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = 32 + 16 + 0 + 4 + 0 + 1 = 5310
2. 8진수와 16진수 1 8진수 ▶ 8진수로 수를 세어 볼까요? 2 16진수 ▶ 16진수로 수를 세어 볼까요? 8진수의 각 자리는 0 ~ 7까지의 8개의 기호를 이용하여 나타내고, 각 자리에서 7보다 큰 경우에 자릿수를 하나씩 올리는 체계이다. ▶ 8진수로 수를 세어 볼까요? 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, … 16진수 2 한자리로 16진수를 표현하기 위해서는 16개의 기호가 있어야 하고 0 ~ 9까지의 10개의 기호와 9이후의 숫자에 대해서는 A, B, C, D, E, F의 6개의 기호를 숫자로 사용한다. ▶ 16진수로 수를 세어 볼까요? 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2A, 2B, 2C, 2D, 2E, 2F, 30, 31, 32, 33, 34, …
3 10진수 → 8진수변환 ▶ 10진수 175를 8진수로 변환 하시오. 예제 3 16진수 37D16를 10진수로 변환하시오. 예제 3 풀이 37D16 = 3 x 162 + 7 x 161 + D x 160 = 89310
답 : 3CF 답 : 3CF 975 16 60 16 F 3 16 c 3 예제 4 예제 3 풀이 나머지 15 나머지 12 ▶ 10진수 97510를 16진수로 변환하시오. 예제 3 풀이 975 16 읽 는 순 서 60 16 나머지 15 F 3 16 나머지 12 c 나머지 3 3 답 : 3CF 답 : 3CF
3. 2진수, 8진수와 16진수 1 2진수와 8진수 사이의 변환 8 = 23이라는 사실에서 8진수와 2진수 간의 변환을 쉽게 할 수 있다. 즉 8 = 23이므로 8진수 한 자리는 2진수 세 자리에 해당하며, 역으로 2진수 세 자리는 8진수 한자리에 해당된다. 예제 5 ▶ 8진수 6538을 2진수로 바꾸시오. 예제 5 풀이 6 6 5 5 3 3 6538 = 110101011 110 101 011
예제 6 ▶ 8진수 54168을 2진수로 바꾸시오. 예제 5 풀이 5 5 4 4 1 1 6 6 6538 = 101100001110 101 100 001 110 예제 7 ▶ 2진수 1101011110112을 8진수로 변환하시오. 예제 5 풀이 110 110 101 101 111 111 011 011 110101111011 110101111011 6 5 7 3 2진수를 3개씩 분리하여 가중치에 따라 변환한다.
예제 8 ▶ 2진수 10011010112을 8진수로 변환하시오. 예제 8 풀이 001 001 001 001 101 101 011 011 00 00 10011010112 10011010112 1 1 5 3 자리수가 모자랄 때는 0으로 채워넣는다.
1 2진수와 16진수 사이의 변환 2진수와 16진수의 변환도 16이 2의 네제곱이라는 성질을 이용하여 10진수를 거치지 않고 간단히 수행할 수 있다. 16 = 24이므로 16진수 한 자리는 2진수 네 자리에 해당하며 역으로 2진수 네 자리는 16진수 한 자리에 해당된다. 예제 9 ▶ 16진수 8E516을 2진수로 변환하시오. 예제 9 풀이 8 8 E E 5 5 8E516 = 100011100101 1000 1110 0101
예제 10 ▶ 2진수 1011101001102을 16진수로 변환하시오. 예제 11 풀이 1011 1011 1010 1010 0110 0110 101110100110 101110100110 2진수를 4개씩 분리하여 가중치에 따라 변환한다. B A 6 예제 11 ▶ 2진수 1011110102을 16진수로 변환하시오. 예제 11 풀이 0001 0001 0111 0111 1010 1010 000 000 1011110102 1011110102 1 7 A 자리수가 모자랄 때는 0으로 채워넣는다.
3 8진수와 16진수 사이의 변환 8진수로 표현된 수를 2진수로 변환한 다음 오른쪽부터 네자리씩 묶어서 16진수로 변환하면 되고, 반대로 16진수를 8진수로 변환하는 과정은 16진수로 표현된 수를 2진수로 표현한 다음 오른쪽부터 세 자리씩 묶어서 8진수로 변환하면 된다. 예제 12 ▶ 8진수 54578을 16진수로 변환하시오. 예제 12 풀이 8진수 8진수 2진수 2진수 16진수 16진수 54578 =101100101111 5 5 4 4 5 5 7 7 101 100 101 111 B 2 F
예제 13 ▶ 16진수 4F316을 8진수로 변환하시오. 예제 13 풀이 16진수 16진수 2진수 2진수 8진수 8진수 4F316 = 010011110011 4 4 F F 3 3 0100 1111 0011 2 2 3 3 6 6 3 3 탐구문제 ★ 소수점을 포함한 실수도 진수 간의 변화가 가능하다 실수의 변환에 대하여 인터넷 검색을 통하여 진수 변환에 대하여 학습하자.
2. 2진수의 연산 학 습 목 표 2진수에서 사칙연산을 할 수 있다. 음수를 1의 보수 방식, 2의 보수 방식으로 표현할 수 있다. 보수의 원리를 설명 할 수 있다. 디지털 시스템에서 보수를 이용해서 덧셈과 뺄셈을 할 수 있다. 1. 사칙연산 2진수의 사칙연산은 10진수의 연산과 같은 방법으로 실행된다. 덧셈과 뺄셈만을 고려하면 각각 다음의 표와 같이 4가지의 경우만 있다. 따라서, 표 Ⅱ-2와 같이 연산을 하고 10진수의 경우와 같이 자리올림과 자리내림만 고려해 주면 된다. (표 Ⅱ-2) 2진수의 덧셈과 뺄셈 덧 셈 뺄 셈 0 + 0 = 0 0 - 0 = 0 0 + 1 = 1 1 - 0 = 1 1 + 0 = 1 1 - 1 = 0 1 + 1 = 10 10 - 1 = 1
사칙연산 예제 - 덧 셈 - - 뺄 셈 - 11011001 10010011 + 1010100 - 1001110 100101101 100101101 1000101 1000101 - 곱 셈 - - 나눗셈 - 1 1 1 1 110 x 101 11 1001 11 110 000 11 110 11 11110
2. 보수의 개념과 음수 10의 보수 및 개념 10진수 525 - 376을 계산하는 경우 암산(暗算)으로는 얼른 생각이 나지 않으나 로 되어 암산단계는 늘지만 계산이 쉬워진다. 위의 1000 – 376 = 624에서 624는 376의 10의 보수가 된다. 525 + (1000 - 376) – 1000 = 525 + 624 –1000 = 1149 –1000 = 149 9의 보수 및 개념 한편 525 + (999 - 376) - 1000 + 1은 -1000 + 1 = -999가 되어 같은 결과를 얻지만 999 - 376은 보다 쉽게 생각할 수 있다. 위에서 623과 376은 각 자리를 합하면 9가된다. 이것을 9의 보수라고 한다. 525 + (999 - 376) – 1000 + 1 = 525 + 623 –100 + 1 = 1148 – 1000 + 1 = 148 + 1 = 149
+ 1 1 1 1 초기값 초기값 1의 보수 1의 보수 2의 보수 2의 보수 초기값 초기값 반전 반전 1의 보수 1의 보수 1의 보수와 2의 보수 ▶ 2의 보수를 쉽게 구하는 방법 순서 초기값 초기값 반전 반전 1의 보수 1의 보수 +1 +1 2의 보수 2의 보수 초기값 초기값 1 반전 반전 1 1의 보수 1의 보수 + 1 1 2의 보수 2의 보수
1 예제 14 +1101001 +105 예제 15 -1100011 -99 1 1 보수와 음수 2진수의 음수 표현 2진수의 음수표현 방법에는 부호와 크기, 1의 보수, 2의 보수값으로 표현 할 수 있다. 그 사용법은 아래와 같다. 1. 부호와 크기 방식 표현 비트(Bit)의 가장 왼쪽 비트(Sign Bit)로 0이면 “양수”, 1이면 “음수”로 규정하고 나머지 비트를 이용하여 크기를 나타내는 방법이다. ▶ 양수(+) 표현방법 ▶ 음수(-) 표현방법 1 예제 14 ▶ 부호 – 크기 방식으로 표현된 8비트 2진 정보를 10진수로 표현하시오. 1 +1101001 +105 예제 15 ▶ 부호 – 크기 방식으로 표현된 8비트 2진 정보를 10진수로 표현하시오. 1 -1100011 -99
2. 1의 보수 각각의 비트를 반전(0 -> 1, 1 -> 0)한 것과 같은 값 예제 16 ▶ -13을 8비트 1의 보수 방식으로 표현하시오. 예제 16 풀이 -13 2진수 1101 부호/크기 1 1의보수 13 6 2 3 1 답 1 예제 17 ▶ -26을 8비트 1의 보수 방식으로 표현하시오. 1의 보수 -26 2진수 11010 부호/크기 1 답 1
3. 2의 보수 디지털 시스템에서 가장 많이 사용하는 방식으로 1의 보수값에 1을 더한 값으로 나타낸다. 예제 18 ▶ -13을 8비트 2의 보수 방식으로 표현하시오. 예제 18 풀이 -13 2진수 1101 부호/크기 1 1의보수 13 6 2 3 1 1 2의보수 답 1
예제 19 ▶ -13을 8비트 2의 보수 방식으로 표현하시오. 예제 19 풀이 3 -26 1 2진수 11010 2 부호/크기 1 11010 1의보수 26 13 2 6 3 1 4 1 2의보수 5 1
풀이 : 십진수를 8비트의 2진수로 변환한 다음2진수의 덧셈을 한다. 보수를 이용한 덧셈과 뺄셈 보수를 이용한 뺄셈은 1의 보수와 2의보수가 있으나 회로수행의 몇가지 이점이 있으므로 일반적으로 2의 보수를 널리 사용한다. 덧셈의 수행과정 ▶ 8Bit를 이용한 +13과 +5를 더하시오. 풀이 : 십진수를 8비트의 2진수로 변환한 다음2진수의 덧셈을 한다. 13 00001101 + 5 + 00000101 18 00010010 +18 쉬운 예제 ▶ 8Bit를 이용한 +25와 +13을 더하시오. 25 00011001 + 13 + 00001101 38 00100110 +38 P31
▶ 풀이 : 십진수를 8비트의 2진수로 변환한 다음2진수의 덧셈을 한다. 뺄셈의 수행과정 ① 양수와 그보다 절대값이 작은 음수의 덧셈 ② 양수와 그보다 절대값이 큰 음수의 덧셈 ③ 두 음수의 덧셈 ④ 절대값은 같고 부호가 반대인 경우 뺄셈의 수행과정 1 ① 양수와 그보다 절대값이 작은 음수의 덧셈 ▷ 일반적인 방법 ▷ 보수의 이용법 A - B A + (B의 2의 보수) 예제 1 ▶ +13과 –5의 덧셈 ▶ 풀이 : 십진수를 8비트의 2진수로 변환한 다음2진수의 덧셈을 한다. 13 + - 5 18 13의 2진수 -5의 2의보수 + 결과값 00001101 + 11111011 1 00001000 0은 양수를 표현 ★ 8비트 초과 되므로 제거
▶ 풀이 : 십진수를 8비트의 2진수로 변환한 다음 2진수의 덧셈을 한다. 뺄셈의 수행과정 2 ② 양수와 그보다 절대값이 큰 음수의 덧셈 예제 2 -13과 +5의 덧셈 ▶ 풀이 : 십진수를 8비트의 2진수로 변환한 다음 2진수의 덧셈을 한다. -13 + + 5 - 8 -13의 2의 보수 + 5의 2진수 + 결과값 11110011 + 00000101 11111000 부호 비트로 음수 부호비트를 제외한 나머지(1111000) 2의 보수화 10001000 (-8) 1은 음수를 표현
▶ 풀이 : 십진수를 8비트의 2진수로 변환한 다음 2진수의 덧셈을 한다. 뺄셈의 수행과정 3 ③ 두 음수의 덧셈 예제 3 -13과 -5의 덧셈 ▶ 풀이 : 십진수를 8비트의 2진수로 변환한 다음 2진수의 덧셈을 한다. -13 + - 5 - 8 -13의 2의 보수 -5의 2의 보수 + 결과값 11110011 + 11111011 1 11101110 8비트 초과 되므로 제거 부호비트를 제외한 나머지(1101110) 2의 보수화 10010010 (-18) 음수를 표현
▶ 풀이 : 십진수를 8비트의 2진수로 변환한 다음 2진수의 덧셈을 한다. 뺄셈의 수행과정 4 ④ 절대값은 같고 부호가 반대인 경우 예제 4 +13과 -13의 덧셈 ▶ 풀이 : 십진수를 8비트의 2진수로 변환한 다음 2진수의 덧셈을 한다. -13 + +13 -13의 2의 보수 +13의 2진수 + 결과값 11110011 + 00001101 1 00000000 ☆ 8비트 초과 되므로 제거 부호비트를 제외한 나머지(1101110) 2의 보수화 10010010 (-18) 음수를 표현
부호비트가 1이되어 음수로 표현되고 있다. (오류) 보수를 이용한 연산시 주의 사항 8비트 기억소자를 사용한 시스템이 양수와 음수를 표현할 때 사용영역은 -27 ~ +(27-1)이 된다. n비트 기억소자를 사용한 시스템이 양수와 음수를 표현할 때 사용영역은 -2n ~ +(2n-1)이 된다. 따라서 사용범위를 벗어난 연산을 하는 경우 얻게 되는 결과는 부정확한 결과가 되며 이러한 경우를 오버플루(Overflow)라고 한다. 쉬운 예제 ▶ 8비트 기억소자 시스템에서 +100과 +30의 덧셈 100 + 130 30 + 100의 2진수 30의 2진수 결과값 01100100 + 00011110 10000010 (≠ +130) 부호비트가 1이되어 음수로 표현되고 있다. (오류) - 2 의 값이 됨
3. 실수의 표현 학 습 목 표 고정소수점 수를 부동 소수점 수로 변환할 수 있다. 단정도(4바이트)와 배정도(8바이트) 부동 소수점 수를 구분 할 수 있다. 10진수를 부동 소수점 수 표현 방식에 따라 2진비트 열로 전개할 수 있다. 컴퓨터에서 부동 소수점 수가 사용되는 용도를 알고 응용할 수 있다. 1. 실 수 실수는 아주 작은 수나 아주 큰 수의 표현에 적합하며 소수점을 포함하고 있는데, 소수점의 위치에 따라 크기가 달라진다. 이와 같이 소수점의 위치가 고정된 것이 아니라 크기에 따라 변동되므로 실수는 정수의 표현과 다르게 표현된다. 실수의 표현 방식 실수의 표현 방식은 부동소수점(Floating Point)방식이라 하며 4바이트, 8바이트를 사용하여 아래와 같이 표현한다. 부 호 지 수 부 (8비트) 가 수 부 (23비트) 1 8 9 31 정규화된 실수의 가수를 표시하는데 실수의 가수는 항상 첫번째 비트가 1이므로 생략하고 나머지 비트만 표현한다. 0 =>양수 1 =>음수 정규화된 실수의 지수0 을 011111112로 나타내어 지수표현의 기준으로 한다.
예제 20 ▶ -0.10111 x 2-3을 32비트 부동소수점 방식으로 표현하시오. 예제 20 풀이 1 2 3 정규화 -0.10111 x 2-3 -1.0111 x 2-4 부호 / 지수부 / 가수부 결정 4 부호 음수 1 지수부 지수가 –4이므로 –4 + 127(정규화된 실수의 지수값) = 123(01111011) 가수 10111에서 첫번째 비트를 생략하면 0111이 된다. 이를 23비트로 표현하면 (01110000000000000000000 )이다. 가수부 이를 모두정리하면 1 01111011 01110000000000000000000 8 9 31 BDB8000016 16진수 B D B 8 부호 지수부 가수부
예제 21 ▶ 12.687510를 32비트 부동 소수점 표현으로 나타내시오. 예제 21 풀이 1 2 3 2진수 정규화 12.687510 1100.10112 1.1001011 x 23 양수 4 부호 지수부 3 + 127 = 130 (8비트로 표현하면 10000010) 가수 11001011에서 첫번째 비트1을 생략한 다음 23비트로 표현하면 (10010110000000000000000 )이다. 가수부 이를 모두정리하면 10000010 10010110000000000000000 1 8 9 31 414B000016 16진수 4 1 4 B 부호 지수부 가수부
인터넷의 여러가지 검색 엔진을 이용하여 8바이트(64비트) 부동 소수점 방식의 규격을 찾아보고 예제 21을 64비트 부동 소수점 표현 으로 나타내자. ▷ 탐구 문제 ▷ 참고사이트 소개