안경잡이개발자

부동소수점 +1
728x90
반응형

● 컴퓨터의 실수 표현

 

  지난 시간에는 컴퓨터의 정수 표현에 대해서 공부하는 시간을 가졌습니다. 컴퓨터에서 소수점을 표현하는 방식에는 고정 소수점 방식과 부동 소수점 방식이 있습니다. 고정 소수점 방식은 소수점이 항상 고정된 위치에 있다는 의미로 정수를 표현할 때 주로 사용되어집니다. 부동 소수점 방식소수점의 위치가 바뀌기 때문에 실수를 표현할 때 주로 사용하며 고정 소수점 방식보다 넓은 범위의 수를 표현할 수 있습니다.

 

  부동 소수점 방식으로 저장된 실수는 인간에게 다음으로 해석됩니다.

 

  m X r^e ( m : 가수 r : 밑수 e : 지수 )

 

  예를 들어 57.23 X 10^1에서 가수는 57.23, 밑수는 10, 지수는 1이 됩니다. 572.3 X 10^2에서는 가수가 572.3, 밑수는 10, 지수는 2가 됩니다.

 

  컴퓨에서 실수를 부동 소수점 방식으로 저장하면 부호 비트와 지수 부분과 가수 부분 이렇게 세 영역으로 저장이 됩니다. 부호 비트는 양의 실수인지 음의 실수인지 나타내는 부분이고, 지수 부분은 소수점 위치를 나타내며, 가수 부분은 유효 자릿수를 나타냅니다. 부동 소수점 방식은 표현 범위에 따라 4바이트의 단일 정밀도 형식과 8바이트의 이중 정밀도 형식으로 나눌 수 있습니다.

 

  32비트 체제(단일 정밀도 형식)에서는 부호 부분 1, 지수 부분 8, 가수 부분 23개로 비트를 할당합니다.

  64비트 체제(이중 정밀도 형식)에서는 부호 부분 1, 지수 부분 11, 가수 부분 52개로 비트를 할당합니다.

 

  실수를 부동 소수점 방식으로 저장할 때는 정규화 과정을 거칩니다. 예를 들어 2진 소수 101.01 X 2^1은 10.101 X 2^2 등으로 표현해도 그 값이 달라지지 않습니다. 이 때 정규화된 표현은 1.0101 X 2^3입니다. 이와 같이 2진 소수를 정규화시키면 1.XXX로 표현할 수 있습니다. 정규화된 2진 소수 1.0101 X 2^3의 부호는 양수, 가수는 1.0101, 밑수는 2, 지수는 3입니다. 정보를 저장할 때 양의 지수와 음의 지수가 구분되도록 단일 정밀도일 때는 지수에 127을 더하고 이중 정밀도일 때는 1023을 더합니다. 그리고 가수에는 정수 값 1을 생략하고 저장합니다.

 

  위 정규화 과정과 비트 정리 과정을 거치게 되면 '부동 소수점 표현'이 가능해지는 것입니다.

 

  예시 ) 2진수 10110.11011을 단일 정밀도 형식의 부동 소수점으로 나타내봅시다.

 

  2진수 10110.11011을 단일 정밀도 형식의 부동 소수점으로 나타낼 때 먼저 정규화를 해야 하겠습니다.

  정규화를 하게 되면 1.011011011 X 2^4이 됩니다. 부호 비트는 양수이므로 0, 지수는 4이므로 바이어스에 적용하면

  127 + 4 = 131이 됩니다. 결과적으로 10000011(2) = 131(10)이 됩니다.

  수는 정수 값 1을 제외한 011011011을 저장하고 나머지를 0으로 채우므로 변환된 부동 소수점 표현은 아래와 같습니다.

 

  ( 부동 소수점 ) 0 10000011 00000000000000011011011

 

  실제로 이러한 부동 소수점 표현 방식은 IEEE 방식과 IBM 방식으로 나누어지기 때문에 이와 관련한 문제가 출제될 때는 표현 방식에 대해서 구체적으로 명시할 필요가 있습니다. 물론 요즘 주로 쓰이는 방식은 IEEE 방식입니다. 정규화 과정 자체도 시험문제로 많이 출제되는 부분이므로 컴퓨터 개론학에서 반드시 기억하는 것이 좋은 부분입니다.

● 요약

  지금까지 컴퓨터의 수 체계에 대해서 계속 학습해오는 시간을 가졌습니다. 간단하게 배운 내용을 정리하도록 하겠습니다.

  컴퓨터는 0과 1의 2진 체계를 사용하여 데이터를 표현합니다. 또한 진법을 나타낼 때는 수의 오른쪽 아래 첨자로 진법을 나타내는 숫자를 붙입니다. 자릿값이란 해당 진수에 숫자의 위치를 나타내는 제곱수를 적용하는데, 10진수의 자릿값은 10^0(1), 10^1(10), 10^2(100), ... 과 같습니다. 또한 다른 진수를 10진수로 변환할 때는 각 자리의 숫자에 자릿값을 곱한 후 모두 더하면 됩니다. 반대로 10진수를 다른 진수로 변환할 떄는 정수 부분과 소수 부분을 모두 구분하여 변환한 후 그 결과를 조합한다고 하였습니다. 정수 부분은 변환하려는 진수로 나누어 ​떨어지지 않을 때까지 반복하고, 마지막으로 각 단계의 나머지를 역순으로 나열합니다. 소수 부분은 변환하려는 진수를 곱합니다. 곱셈 소수 부분이 0이 될 때까지 반복하며, 마지막으로 각 단계에서 발생하는 정수 부분을 순서대로 나열합니다.

  정보의 표현은 다음과 같습니다. 정보를 표현하는 최소 단위를 바로 비트(Bit)라고 하며 N개의 비트로 표현할 수 있는 정보의 수는 2^N개 입니다. 문자를 표현하는 최소 단위는 바이트(Byte)라고 하며, 8개의 비트로 구성됩니다. 1바이트는 256(2^8)개의 서로 다른 데이터를 표현할 수 있습니다. 워드(Word)란 명령어나 연산을 처리하는 기본 단위로서, 기억장치에 한 번 접근하여 얻을 수 있는 데이터의 양입니다. 코드란 한글, 영문자, 숫자, 특수문자 등 다양한 문자를 구분하기 위해서 각 문자마다 유일한 값으로 표현한 기호 체계입니다.​ 코드의 종류는 아스키 코드, 2진화 10진 코드, 확장 2진화 10진 코드, 유니코드 등이 있습니다.​

  보수란 '두 수의 합이 진법의 밑수가 되게 하는 수를 의미'하며, 음의 정수를 표현하기 위해 고안된 개념입니다. 2진법에는 1의 보수와 2의 보수가 있습니다. 고정 소수점 방식은 '소수점이 고정되어 있다'라는 뜻이지만 실제로 소수점은 존재하지 않습니다. 소수점이 수의 왼쪽에 있다고 가정하면 소수를 나타내고, 오른쪽에 있다고 가정하면 정수를 나타냅니다. 고정 소수점 방식은 주로 정수를 표현하는 데 사용합니다. 고정 소수점 방식에서의 음의 정수 표현은 다음과 같습니다.

 - 부호화 절댓값 방식 : 부호 비트 1과 2진수의 절댓값으로 나타냅니다.

 - 1의 보수 방식 : 부호 비트 1과 2진수의 절댓값에 대한 1의 보수로 나타냅니다.

 - 2의 보수 방식 : 부호 비트 1과 2진수의 절댓값에 대한 2의 보수로 나타냅니다.

  부동소수점 방식이란 '소수점이 포함된 실수를 표현하기 위해 사용되며 부호 비트, 지수 부분, 가수 부분으로 구성되는 방식'입니다. 지수 부분은 소수점의 위치를 나타내고 가수 부분은 유효 자릿수를 나타냅니다.

728x90
반응형