'Programming/Data Structure'에 해당하는 글 2건

 

 

 

실제 사용되고 있는 부동 소수점 방식은 대부분 IEEE 754 표준을 따른다.
단정밀도(single precision)에서는 부호 1비트, 지수부 8비트, 가수부 23비트를 사용하며, (32비트)
배정밀도(double precision)에서는 부호 1비트, 지수부 11비트, 가수부 52비트를 사용한다. (64비트)
부동소수점은 고정소수점에 비해 매주 크거나 작은 값을 표현할 수 있지만 연산 속도가 느리다.

 

-123.45 같은 실수를 컴퓨터에서 부동소수점(단정밀도)으로 표현하려면 다음의 과정을 거쳐야 한다.

 

  1. 이진수 변환.
  2. 정규화.
  3. 지수부 바이어스 표현법.
  4. 정형화

 

 

이진수 변환은 10진수->2진수 방법으로 정수부.소수부 로 표시한다.
1111011.011100110011001100... 이렇게 이진수 변환을 마쳤으면 정규화를 한다.
부동소수점의 정규화는 가수의 첫째 자리가 밑수보다 작은 한자리 자연수가 되도록 바꾸어 다음의 형태처럼 만든다.
(가수)*(밑수)^(지수)
2진법에서 밑수는 2이므로 2보다 작은 자연수는 1이다.
1.11101101110011001100110(2) * 2^6
지수부는 8비트이므로 0~255까지의 지수를 표현할 수 있지만 음수 지수를 처리하기 위해 바이어스 표현법을 사용한다.
바이어스 표현법이란 표현 가능한 영역을 반으로 나누어 동일한 음수와 양수의 개수를 맞춰주는 것이다.
위에서는 0~255까지 256개의 양수를 -127~128로 만들 수 있으며 바이어스 상수는 127(=2^(n-1)-1)이다.
지수값에 바이어스 상수를 더하여 2진수로 지수부를 표현한다.
127+6 = 133 = 10000101(2)
유효숫자 첫째자리를 제외한 소수 부분을 가수부에 표시하여 정형화 한다.

 

 1

 10000101

 11101101110011001100110

 

 

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

컴퓨터는 더하기 연산밖에 모릅니다.
100-75 란 식이 있을 때 컴퓨터는 빼기를 할 수 없으므로 100+(-75) 처럼 음수 75를 더하여 연산합니다.
이 음수를 표현하기 위해 컴퓨터는 2의 보수란 것을 사용해야 합니다.
2의 보수는 1의 보수의 LSB(최하위비트)에 1을 더하여 알아낼 수 있습니다.
1의 보수는 0->1로 1->0으로 모든 bit를 뒤집어서 간단하게 알아낼 수 있습니다.

 

8bit 에서 -4 를 표현할 때,

 

00000100 +4
11111011 -4 : 1의 보수    // +4를 모두 뒤집어서 1의 보수 구함. MSB(최상위비트)가 0이면 양수 1이면 음수.
11111100 -4 : 2의 보수    // 1의 보수의 LSB에 1 더함.

 

1의 보수의 문제는,,
+0과 -0으로 0이 두개가 나타납니다. 00000000(+0), 11111111(-0)
부호절대값(Sign-Magnitude)이나 1의 보수는 0이 두개(+,-) 존재하기 때문에 2의 보수를 사용합니다.

 

 

예제) 3+6, 3+(-6), (-3)+6, (-3)+(-6) 을 2의 보수를 사용하여 계산해 보겠습니다.

 

 -3 구하기

 00000011 (+3)
 11111100 (-3) 1의 보수
 11111101 (-3) 2의 보수

 -6 구하기

 00000110 (+6)
 11111001 (-6) 1의 보수
 11111010 (-6) 2의 보수

 

 

 3+6=

  00000011 (+3)
 +00000110 (+6)
 --------------
  00001001 (+9)
.

 3+(-6)=

  00000011 (+3)
 +11111010 (-6)
 --------------
  11111101 (-3)
.

 (-3)+6=

  11111101 (-3)
 +00000110 (+6)
 --------------
 100000011
  00000011 (+3)

 (-3)+(-6)=

  11111101 (-3)
 +11111010 (-6)
 --------------
 111110111
  11110111 (-9)

 

정해진 bit의 자리수를 벗어난 이진수를 Carry 라고 하며, Carry는 그냥 버립니다.


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,