정보처리기사/소프트웨어 개발

데이터 입출력 구현 2

RangA 2023. 5. 3. 15:19

고정 소수점과 부동 소수점

01. 고정 소수점(정수)

1) 고정 소수점 수의 표현

  • 고정 소수점
    • 정수는 실수와 같이 소수점이 불규칙하지 않고 항상 고정되어 있다고 해서 붙여진 이름
    • 정수는 실수의 부분 집합이며 실수로 표현이 되므로 1.0, 2345.0, -35.0 등으로 표현
    • 정수는 고정 소수점, 실수는 부동 소수점이라고 함
  • 3비트로 수를 표현하면 총 8개의 수를 표현할 수 있음
  • 전원을 각 회선에 각각 On, Off, On을 넣어주면 1, 0, 1이 전달된 것이므로 이진수는 101, 십진수를 5를 전달한 것이 됨
  이진수     십진수  
  000     0  
  001     1  
  010     2  
  011     3  
  100     4  
  101     5  
  110     6  
  111     7  
  • 8가지이므로 0 ~ 7까지 표현할 수 있음
  • 0과 자연수의 범위에서 음의 자연수(음의 정수)로 확대 표현하는 것이 활용도가 좋음
  • 음수를 표현하기 위하여 부호화 절대치에서 1의 보수, 2의 보수 방법으로 발전
  • 보수는 컴퓨터에서 기본적으로 사용하는 덧셈 연산을 이용하여 뺄셈을 수행하기 위해서 사용
  • 현재에는 2의 보수 방법으로 음수를 표현

2) 부호화 절대치

  • 3비트에서 상위 1비트는 무조건 부호로 봄
  • 0이면 양수(+), 1이면 음수(-)
  • -3 ~ +3까지 표현되며, +0, -0이 존재함
  • 3비트이므로 -(22 - 1) ~ +22 - 1
  • 따라서 n비트이면 -(2n-1 - 1) ~ +2n-1 - 1이 됨
  이진수     부호 비트     나머지 비트     부호     십진수     부호화 절대치  
  000     0     00     +     0     +0  
  001     0     01     +     1     +1  
  010     0     10     +     2     +2  
  011     0     11     +     3     +3  
  100     1     00     -     0     -0  
  101     1     01     -     1     -1  
  110     1     10     -     2     -2  
  111     1     11     -     3     -3  

3) 1의 보수

  • 3비트에서 상위 1비트는 무조건 부호로 봄
  • 0이면 양수(+), 1이면 음수(-)
  • 3비트이므로 -(22 - 1) ~ +22 - 1
  • +3 다음에 -3이 되게 하여 수를 회전하도록 함
  • 따라서 n비트이면 -(2n-1 - 1) ~ +2n-1 - 1이 됨
  이진수     부호 비트     나머지 비트     부호     십진수     1의 보수  
  000     0     00     +     0     +0  
  001     0     01     +     1     +1  
  010     0     10     +     2     +2  
  011     0     11     +     3     +3  
  100     1     00     -     0     -3  
  101     1     01     -     1     -2  
  110     1     10     -     2     -1  
  111     1     11     -     3     -0  

4) 2의 보수

  • 3비트에서 상위 1비트는 무조건 부호로 봄
  • 0이면 양수(+), 1이면 음수(-)
  • -4 ~ +3까지 표현되며, 0이 하나만 존재함
  • 3비트이므로 -(22) ~ +22 - 1
  • +3 다음에 -4가 되게 하여 수를 회전하도록 함
  • 따라서 n비트이면 -(2n-1) ~ +2n-1 - 1이 됨
  이진수     부호 비트     나머지 비트     부호     십진수     2의 보수  
  000     0     00     +     0     +0  
  001     0     01     +     1     +1  
  010     0     10     +     2     +2  
  011     0     11     +     3     +3  
  100     1     00     -     0     -4  
  101     1     01     -     1     -3  
  110     1     10     -     2     -2  
  111     1     11     -     3     -1  

5) 정수 표현 범위(8비트를 사용할 경우)

  구분     부호화 절대치     1의 보수     2의 보수  
  +75     0100 1011     0100 1011     0100 1011  
  -75     1100 1011     1011 0100     1011 0101  
  0의 표현     +0 : 0000 0000  
  -0 : 1000 0000  
  0이 2가지 존재  
  +0 : 0000 0000  
  -0 : 1111 1111  
  0이 2가지 존재  
  +0 : 0000 0000  
  0이 1가지 존재  



02. 부동 소수점(실수)

1) 부동 소수점 수의 표현

  • 부동 소수점
    • 실수형 상수는 12.34, 0.0003, -1.34와 같이 소수점을 중심으로 좌우에 숫자들이 불규칙해서 붙여진 이름
    • 실수형 상수를 기억 장소인 실수형 변수에 기억시키려면 불규칙한 소수점을 일정하게 유지해야 하므로 정규화가 필요
  • 실수 데이터의 표현과 연산에 사용
  • 정규화(Normalization) 과정을 통하여 부호부, 지수부, 가수부로 구성
  • 고정 소수점보다 복잡하고 실행 시간이 많이 걸리며, 아주 큰 수나 작은 수의 표현이 가능하고 정밀도가 제한적
  • 부호 비트의 양수는 0, 음수는 1로 표현

2) 부동 소수점의 정규화

  • -98.45인 경우에는 부호부는 음수(-)이므로 1, 가수부는 -0.9845에서 9845, 지수부는 2승이므로 2를 기억시키면 됨
  실수형 상수     정규화     기억시키는 값     부호     지수(8비트)     가수(32비트) 소수점 제외  
  0.234     0.234 x 100     +(0), 234, 0     0     00000000     11101010000000000000000  
  -98.5     -0.985 x 102     -(1), 985, 2     1     00000010     985의 이진수 표현  
  3.125     0.3125 x 101     +(0), 3125, 1     0     00000101     3125의 이진수 표현  
  -255.75     0.25575 x 103     -(1), 25575, 3     1     00000011     25575의 이진수 표현  
  47.5     0.475 x 102     +(0), 475, 2     0     00000010     475의 이진수 표현  

3) 부동 소수점 연산

1. 부동 소수점의 덧셈과 뺄셈

  1. 0인지 여부를 조사
    • 값이 0인 부동 소수점은 정규화할 수 없음
    • 0이 포함된 연산이라면 0이 아닌 피연산자가 연산 결과가 됨
  2. 큰 지수에 맞춰 두 수의 지수가 같도록 조정
  3. 두 수의 가수를 더하거나 뺌
  4. 정규화 수행

2. 부동 소수점의 곱셈

  1. 0인지 여부를 조사
    • 0이 포함된 연산이라면 곱셈 연산 결과는 0이 됨
  2. 지수를 더함
  3. 가수를 곱함
  4. 정규화 수행

3. 부동 소수점의 나눗셈

  1. 0인지 여부를 조사
    • 제수가 0이면 오류, 피제수가 0이면 나눗셈 연산 결과는 0이 됨
  2. 부호를 결정
  3. 피제수가 제수보다 작게 피제수의 위치를 조절
    • 피제수가 크면, 가수부가 소수점 이하가 나오지 않음
  4. 지수를 뺌
  5. 가수를 나눗셈함
  6. 정규화 수행



03. 자료형 변환 시 확장과 축소

1) 확장(Widening)

  • 정수형을 실수형으로 변환 시 정보의 손실이 없음

2) 축소(Narrowing)

  • 실수형을 정수형으로 변환 시 정보의 손실이 있음



04. 기억 장치의 용량

1) 저장 용량 단위

  단위(명칭)     설명  
  1KB(Kilo Byte)     210byte = 1024byte ≒ 1000B  
  1MB(Mega Byte)     210KB = 210 x 210 = 220byte ≒ 1000KB  
  1GB(Giga Byte)     210MB = 210 x 220 = 230byte ≒ 1000MB  
  1TB(Tera Byte)     210GB = 210 x 230 = 240byte ≒ 1000GB  
  1PB(Peta Byte)     210TB = 210 x 240 = 250byte ≒ 1000TB  
  1EB(Exa Byte)     210PB = 210 x 250 = 260byte ≒ 1000PB  
  1ZB(Zetta Byte)     210EB = 210 x 260 = 270byte ≒ 1000EB  
  1YB(Yotta Byte)     210ZB = 210 x 270 = 280byte ≒ 1000ZB  

2) 속도 및 길이를 나타내는 단위

  단위(명칭)     설명  
  10-1(deci)     1d = 1/10 = 0.1  
  10-2(centi)     1c = 1/100 = 0.01  
  10-3(milli)     1m = 1/1,000 = 0.001  
  10-6(micro)     1μ = 1/1,000,000 = 0.000001  
  10-9(nano)     1n = 1/1,000,000,000 = 0.000000001  
  10-12(pico)     1p = 1/1,000,000,000,000 = 0.000000000001  
  10-15(femto)     1f = 1/1,000,000,000,000,000  
  10-18(atto)     1a = 1/1,000,000,000,000,000,000  
  10-21(zepto)     1z = 1/1,000,000,000,000,000,000,000  
  10-24(yocto)     1y = 1/1,000,000,000,000,000,000,000,000