Chapter 02 수의 체계
학습 목표 10진수, 2진수, 8진수, 16진수 등의 표현 방법을 알아본다. 10진수, 2진수, 8진수, 16진수 등의 상호 변환방법을 알아본다. 2진수의 연산과 2진수 음수의 표현방법을 알아본다. 부동소수점의 2진수의 IEEE 754 표준 방식을 알아본다.
목 차 01. 10진수 02. 2진수 03. 8진수와 16진수 04. 진법 변환 05. 2진 정수 연산과 보수 06. 2진 부동소수점수의 표현
1. 10진수 10진수 표현법 기수가 10인 수 0,1,2,3,4,5,6,7,8,9 사용 바빌로니아인 : 60진법을 사용(기원전 4000~3000년) 고대 로마의 기수법에는 5진법을 사용 10진법의 아라비아 숫자는 인도에서 기원전 2세기에 발명 진법을 나타내는 기본수를 기수(基數, radix)라 한다. 10이 기수인 수를 10진법, 2가 기수인 수를 2진법, 12가 기수인 수를 12진법이라 한다.
2. 2진수 2진수 표현법 기수가 2인 수 0, 1 사용
3. 8진수와 16진수 8진수 표현법 16진수 표현법 10진수에 해당하는 16진 기호 0에서 7까지 8개의 수로 표현 0에서 9, A(a)에서 F(f)까지 16개의 기호로 표현 10진수에 해당하는 16진 기호 10진수 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16진수 A B C D E F
4. 진법 변환 1. 10진수-2진수 변환 정수부분과 소수부분으로 나누어 변환 정수부분은 2로 나고, 소수부분은 2를 곱한다. 10진수 69.6875를 2진수로 변환하는 경우
10진수 69.6을 2진수로 변환하는 경우 10진수 소수부분은 대부분의 경우 정확한 2진수로 변환이 안 된다.
2. 10진수-8진수 변환 10진수 69.6875를 8진수로 변환하는 경우 8로 나누고, 곱한다. 10진수 69.6을 8진수로 변환하는 경우
3. 10진수-16진수 변환 다른 진법의 경우도 같은 방법을 이용하여 변환할 수 있다 10진수 69.6875를 16진수로 변환하는 경우 10진수 69.6을 16진수로 변환하는 경우 다른 진법의 경우도 같은 방법을 이용하여 변환할 수 있다
4. 2진수-8진수-16진수-10진수 상호변환 10진수 2진수 8진수 16진수 0000 00 1 0001 01 2 0010 0000 00 1 0001 01 2 0010 02 3 0011 03 4 0100 04 5 0101 05 6 0110 06 7 0111 07 8 1000 10 9 1001 11 1010 12 A 1011 13 B 1100 14 C 1101 15 D 1110 16 E 1111 17 F
상호변환 예 10진->2진->8진 3자리씩 나눔 10진->2진->16진 4자리씩 나눔
각 자릿수에 각 진법의 누승을 곱하여 10진수로 변환 상호변환 예(Cont’d) 8진수 1자리 =2진수 3자리 16진수 1자리 =2진수 4자리 각 자릿수에 각 진법의 누승을 곱하여 10진수로 변환
상호변환 예(Cont’d) 8진->2진->10진 16진->2진->10진
5. 2진수 정수 연산과 보수 1. 2진수 양의 정수 덧셈 10진수 2진수 8진수 16진수 0+0=0, 0+1=1, 1+0=1, 1+1=10 (자리올림 발생) 10진수 2진수 8진수 16진수
2. 2진 음의 정수 표현과 보수(complement) 최상위비트(MSB)를 부호비트로 사용 양수(+) : 0 음수(-) : 1 2진 음수를 표시하는 방법 부호와 절대치(sign- magnitude) 1의 보수(1's complement) 2의 보수(2’s complement) r진법 n자릿수 x의 r의 보수 : r진법 n자릿수 x의 r-1의 보수 : 00000011의 1의 보수 = 00000011의 2의 보수 = 567의 9의 보수
양수를 보수로 바꾸면 음수 음수를 보수로 바꾸면 양수 1의 보수로 변환하는 방법 2의 보수로 변환하는 방법 0 → 1, 1 → 0으로 변환 00000011 → 1의 보수 = 11111100 2의 보수로 변환하는 방법 1의 보수 + 1 = 2의 보수 00000011 → 2의 보수 = 1의 보수 + 1 = 11111100 + 1 = 11111101 맨 뒤에서부터 최초의 1이 나타날 때까지(아래 빨간 부분)는 그대로 쓰고 나머지 앞부분은 0 → 1, 1→ 0으로 바꾼다. 01101100 → 2의 보수 = 10010100 = 1의 보수 + 1 = 10010011 + 1 = 10010100
2진수의 표현 방법 3가지 8bit 크기이며, MSB가 부호비트 임. 부호와 절대치 1의 보수 2의 보수 01111111 b7b6b5b4b3b2b1b0 8bit 크기이며, MSB가 부호비트 임. 부호와 절대치 1의 보수 2의 보수 01111111 +127 01111110 +126 01111101 +125 01111100 +124 … 00000011 +3 00000010 +2 00000001 +1 00000000 +0 10000000 -0 -127 -128 10000001 -1 -126 10000010 -2 -125 10000011 -3 -124 11111100 -4 11111101 11111110 11111111
뺄셈 : 보수를 취하여 더하면 뺄셈을 수행(Carry가 있으면, 버림) 2의 보수를 사용한 2진 정수의 표현 범위 bit 수 2의 보수를 사용한 2진 정수의 표현 범위 n bit -2n-1 ~ + 2n-1 -1 4 bit -24-1 ~ + 24-1 -1 (-8 ~ +7) 8 bit -28-1 ~ + 28-1 -1 (-128 ~ +127) 16 bit -216-1 ~ + 216-1 -1 (-32768 ~ +32767) 32 bit -232-1 ~ + 232-1 -1 (- 2147483648 ~ + 2147483647)
3. 부호 확장 부호 확장이란 늘어난 비트 수 만큼 부호를 늘려주는 방법 2진수 표현 방법 부호 확장 방법 예 8bit 부호와 크기 부호만 MSB에 복사하고, 나머지는 0으로 채움 양수 00101010 00000000 00101010 음수 10010111 10000000 00010111 1의 보수 늘어난 길이만큼 부호와 같은 값으로 모두 채움 11111111 10010111 2의 보수
4. 2의 보수로 표현된 음수를 10진수로 변환하기 (2의 보수 10101100을 10진수로 변환하는 경우) 첫 번째 방법. MSB가 1이므로 음수이다. 실제크기는 -128이다. 두 번째 방법. 2의 보수로 바꾸어 10진수로 바꾼 다음 -부호를 붙인다.
5. 2의 보수 연산 (8bit) 양수+양수 = 양수 큰 수-작은 수=양수 작은 수 - 큰 수= 음수 양수+양수 = 양수 큰 수-작은 수=양수 작은 수 - 큰 수= 음수 (49+58=107) (58-49=9) (49-58=-9) 음수 + 음수= 음수 큰 양수 + 큰 양수 = 음수 큰 음수 + 큰 음수 = 양수 (-49-58=-107) (98+74=-84) (-98-74=+84) overflow
2진 정수의 2의 보수 개념도 5에서 +방향으로 5칸을 이동하면 -6이 된다. 98+74는 98에 +방향으로 74칸을 가게 되면 -84가 된다.
6. 2진 부동소수점의 표현 단정도 및 배정도 부동소수점수의 비트 할당 컴퓨터의 부동소수점수는 IEEE 754표준을 따른다. 부호(sign), 지수(exponent), 가수(mantissa)의 세 영역으로 표시. 단정도(single precision) 부동소수점수와 배정도(double precision) 부동소수점수의 두 가지 표현 방법이 있다. 단정도 및 배정도 부동소수점수의 비트 할당 구분 IEEE 754 표준 부동소수점수의 비트 할당 바이어스 단정도 부동소수점수 127 배정도 1023
정규화(normalization) : 과학적 표기방법 2진수의 정규화 바이어스(bias) : 지수의 양수, 음수를 나타내기 위한 방법 IEEE 754 표준에서는 바이어스 127(단정도) 또는 1023(배정도)을 사용. 표현 지수 = 바이어스 + 2진 지수 값 부호 : 1비트 지수(바이어스 127) : 8비트 가수(1.xxx ) : 23비트 양수 127 + 6 = 133 (01111111 + 00000110) 1.을 생략한 가수 (1.0001011011) 10000101 00010110110000000000000 여기에 “1.”이 생략되어 있다.
컴퓨터에서의 부동소수점수의 표현 범위 단정도 부동소수점수의 표현 범위 단정도 부동소수점수 배정도 부동소수점수 비정규화된 2진수 ±~2-149 to ±(1-2-23)ⅹ2126 ±~2-1074 to ±(1-2-52)ⅹ21022 정규화된 2진수 ±~2-126 to ±(2-2-23)ⅹ2127 ±~2-1022 to ±(2-2-52)ⅹ21023 10진수 ±~1.40ⅹ1045 to ±3.40ⅹ1038 ±~4.94ⅹ10-324 to ±1.798ⅹ10308 단정도 부동소수점수의 표현 범위