본문 바로가기
CS/컴퓨터 과학 얕은 지식

floating point는 왜 Bias(이하 Bias 표현법)를 사용할까? (목적, Bias 연산 등 예시)

by Unagi_zoso 2022. 4. 25.

 

Bias 표현법의 뜻과 사용 이유

 

이유

+, - 같은 부호가 존재하는 (signed)  2의 보수법은 그 구조상, 비교를 하기에 어려움이 존재한다.

그래서 지수를 표현하는 부분에서 +, - 같은 부호가 없이 통일된 수로 (unsigned) 범위를 표현한다.

 

그리고 이러한 2의 보수법에서 부호가 없이 통일된 (unsigned) 수들로 만들기 위해 사용되는 것이

Bias 상수를 응용한 연산이고 이렇게 만들어진 체계를 Bias 표현이라 한다.

 

 

2의 보수법과 십진수의 비교 예

 

 

그렇다면 2의 보수법왜 비교가 힘들까란 의문이 생길 수 있어

간단히 예를 보이겠다.

 

 

 

2의 보수법은 음의 부호를 표현하기 위해 

데이터의 비트 중 첫 번째 비트 1을 주어 표현한다.

 

 

8비트의 메모리 환경에서 2의 보수법을 표현해 보겠다.

 

 

11111111 = -1           00000001 = +1

 

10000000 = -128        01111111 = +127

 

 

그리고 단순히 이 수들을 십진수로 만들어보자  비교해보자

 

 

  2의 보수법  십진수
01111111 +127 +127
00000001 +1 +1
11111111 -1 +255
10000000 -128 +128

 

위 표는 2의 보수법 상 내림차순으로 정렬하였다.

이 표만 봤을 때도 2의 보수상 내림차순 정렬이 된 것에 반해

십진수 상의 정렬은 혼란스러움을 알 수 있다.

 

그렇기에 수의 체계에서는 혼란을 느낄 수밖에 없고

컴퓨터 내의 처리장치에서는 어려움을 느낄 수밖에 없는 것이다.

 

2의 보수법 상의 괴리를 한 문장으로 표현하자면

양의 부호로 표현할 수 있는 가장 큰 수 01111111에 1을 더하였더니

값이 음의 부호로 표현할 수 있는 가장 작은 값이 되었다. 

 

오히려 값이 작아진 셈이다.

 

이렇게 2의 보수법은 컴퓨터 내부 처리장치에서

값을 비교하는 데 있어 어려움이 존재한다. 

 

그렇기에 데이터의 크기에 따라 알맞은 Bias 상수를 정하고 

연산을 통해 Bias 표현법을 구현한다.

 

 

 

Bias 표현법 실제 사용 예

 

*  바이어스 상수 = 2^(n-1)-1 , n은 지수의 크기 (bit 단위)

 

 

8 bits 기준 ( 4 bytes float의 지수 표현 비트 크기)

= 2^(8-1)-1

= 127

 

11 bits 기준 ( 8 bytes double의 지수 표현 비트 크기)

= 2^(11-1)-1

= 1023

 

  bias 상수
8bits (float 지수bit) 127
11bits (double 지수 bit) 1023

 

 **  Bias 표현법 = 2의 보수법의 수 + 바이어스 상수

 

form)

i의 Bias  (i는 유리수)

= i의 2의 보수법상 표기 

    +  01111111(bias 상수 8 bits 기준 127)

=  합 결과(이진수)

십진수 변형 결과 

 

-128의 Bias
= 10000000
   + 01111111
= 11111111
255 
-2의 Bias
= 11111110
   + 01111111
= 01111101
125
2의 Bias
= 0000010
   + 0111111
= 1000001
129
-127의 Bias
= 10000001 
   + 01111111
= 00000000
0
-1의 Bias
= 11111111
   + 01111111
= 01111110
126
126의 Bias
= 01111110
   + 0111111
= 11111101
253
-126의 Bias
= 10000010 
   + 01111111
= 00000001
1
0의 Bias
= 00000000
   + 01111111
= 01111111
127

127의 Bias
= 01111111
   + 01111111
= 11111110
254
-3의 Bias
= 11111101
   + 0111111
= 01111100
124
1의 Bias
= 0000001
   + 0111111
= 1000000
128

 

 

정리표

 

-128 -127 -126 .  .  . -1 0 +1 .  .  . +126 +127
255 0 1   126 127 128   253 254

가 2의 보수법 상의 수

아래가 Bias 표현으로 구한 수이다.

 

크게 볼 것은 2의 보수법 상 8비트에서 가장 작은 수인 -128이 가장 큰 수인 255로 표현되었고

-127부터가장 작은 수인 0에서부터 커져가는 규칙이 있었다.

 

여기서 의문을 가질 수 있다. 왜 -128부터 커지는 게 아니라 -127부터인 걸까?

왜 -128은 255라는 가장 큰 수로 표현되게 만든 걸까? Bias 상수를 잘못 정의한 거 아니야? 등 

 

이와 관련해서 여러 글들을 찾아봤지만 정확한 답변을 찾기는 힘들었다.

그러나 필자의 생각 Bias 표현법 상에서 8 bits 기준 1111 1111, 즉 255는 

무한한 값 INF나 NaN을 의미하도록 정의하였다. 그렇기에 255만큼은 저 규칙에

들어가지 않게 설계한 게 아닌가 생각한다.

 

 

이러니 저러니 해도

Bias의 목적은 역시

Bias 표을 통하여 음의 부호를 표현할 수 있는 2의 보수법의 장점을 챙기며

비교할 때의 어려움이란 단점을 보완한 것이다. 

 

읽어봐 주셔서 감사합니다. 

 

floating point (부동소수점)에 대한 더 많은 정보가 궁금하다면 아래 포스팅을 봐주세요.

 

https://unagi-zoso.tistory.com/2

 

[부동 소수점 floating point] 이론 , 예 , bias 표현법

용어 의미 부동 소수점은 둥둥 떠다닐 수 있는 소수점이다. 주의할 것이 움직이지 않는 의미에서의 부동이 아니다. ( 이는 고정 소수점이라는 실수 표기법으로 따로 존재한다.) 부동 소수점의 탄

unagi-zoso.tistory.com

 

 

** 틀린 부분이나 보완할 점이 있다면 부디 알려주시면 정말 감사할 것 같습니다! **

댓글