컴퓨터 구조 03 : 실수표현법, 논리게이트

728x90

실수표현법과 논리게이트

 

실수표현법 - 이진기수법


• 소수를 이진수로 변환하는 법 : 정수와 반대로 곱하기를 이용
ex) 0.625*2 = 1.25 : 1을 빼낸다
0.25*2 = 0.5 : 0을 빼낸다
0.5*2 = 1.0 : 1을 빼낸다 ->나머지 0
나머지 0이 나오면 변환 종료, 빼낸 숫자들을 위에서부터 읽는다. 따라서 0.625 -> 0.101

 

그러나 순환소수가 발생할 수 있는 단점이 있다.

 

 

 


실수표현법 - 고정소수점 표현 방식


• 이전 설명대로 10진수를 2진수로 바꿨을때 그걸 박아넣는 방식이다.

• 7.625는 앞선 방법으로 2진수로 변환시 111.101이된다. 이걸 이렇게 저장한다.

• 부호비트는 양수는 0, 음수는 1. 

• 남는 자리는 다 0으로 채운다. 

• 장점 :구현이 편함
• 단점 : 사용 가능 비트 수 대비 표현 가능한 수 범위, 정밀도가 낮아서 실수
를 많이 다루는 범용 시스템에서는 잘 안쓰인다.

 

 

 

실수표현 - 부동소수점 표현 방식1


• *정규화 : 2진수를 1.xxxx*2^n꼴로 변환하는 것
• 2진수를 정규화하여 나타낸 후, 정수부에 1만 남을 때까지 소수점을 왼쪽(정수부가 0일 경우엔 오른쪽)으로 이동시키고 이동한 칸 수 만큼 n자리에 집어넣는다. 

• ex) 111.101 -> 1.11101*2^2

• IEEE표준에 따라 32나 64비트를 사용. (그림은 32비트 기준) 

• 부호비트는 0이면 양수, 1이면 음수
• 가수부에 소수점 오른쪽 숫자들을 왼쪽부터 넣고, 나머지는 0으로 채움. 

• 소수점 왼쪽은 정규화하면 무조건 1이므로 따로 표현도 안하는데 이 1을 hidden bit라고 부른다.

 

• IEEE표준에 따라 32비트의 경우 지수부는 정규화 값의 n에 bias값 127을 더한 수를 2진수로 바꾼 값을 넣어준다. 

• 앞서 111.101 -> 1.11101*2^2이었으므로 2+127=129
• 129 -> 10000001이므로 최종적으로 이렇게 저장된다.

• bias(127)값을 더하는 이유 : 지수가 음수일 경우를 포함해야하
기 때문. 

 

• bias값을 안쓰는 경우
0.000101 이라는 이진수는 정규화로 1.01*2^-4가 된다. n==-4이지만 표현할 방법이 없어진다.

앞서 말한 부호비트는 지수의 부호가 아닌 전체 숫자에 부호이므로 이 문제와 상관이 없다.

따라서 10진수 기준으로 지수의 0~127 구간은 음수, 지수의 128~255 구간은 양수로 표현하도록 만들기 위해 지수의 n에 값에 bias(127)을 더하도록 구현되었다.

 

 

•앞서 얘기한 32비트 체계는 32비트 단전도(Single-Precision), 64비트 체계는 배정도(Double-Precision)이라고 부른다.

•프로그래밍 실수 자료형 선언에 주로 사용되는 float가 단정도, double은 배정도를 사용한다.

 

• double형의 경우 64비트 체계에 지수부가 11비트, 가수부가 52비트가 된다.  지수부가 2^11, 즉 2048개의 수를 표현할 수 있으므로 지수의 0~1023 구간은 음수, 1024~2047구간은 양수 지수를 의미한다. bias값은 1023이 될 것이다. 

 

• 부동소수점 표현방식은 과정이 복잡하지만 정밀도가 고정소수점 표현 방식보다 우위에 있으므로 대부분의 컴퓨터 시스템에 사용되고 있다.

 

 

 


논리 게이트

 

 

 

728x90