파이썬에서 부동소수점은 float로 나타내며 int와 같이 불변형입니다. 단정도(single precision) 방식에서 32비트 부동소수점을 나타낼 때 1비트는 부호 sign (1:양수, 0:음수), 23비트는 유효 숫자 자릿수 (significant digits), 8비트는 지수(exponent)입니다.

 

 

 

 

예를 들어 십진수 -118.625(10) 를 32비트 단정도로 표현해 보았을때, 먼저 숫자의 절댓값을 이진수로 변환합니다. 부호는 음수이므로 1입니다.

 

118 / 2 = 59 ... 0

59 / 2 = 29 ... 1

29 / 2 = 14 ... 1

14 / 2 = 7 ... 0

7 / 2 = 14 ... 1

3 / 2 = 1 ... 1

0.625 * 2 = 1.250

0.250 * 2 = 0.500

0.500 * 2 = 1.000

 

즉, 1110110.101(2) = 1.110110101(2) * 2^6 입니다.

 

그 다음 변환된 이진수를 다음과 같이 정규화합니다.

 

위의 숫자를 가수부(23비트)에 넣습니다. 부족한 자릿수는 0으로 채웁니다.

 

지수는 6이므로 바이어스(bias)를 더합니다. 즉, 지수 6에 127(0111 1111(2)) 더합니다.

 

6(10) + 127(10) = 133(10) = 10000101(2)

 

이상의 결과를 종합하여 -118.625(10)를 32비트 단정도로 표현한 결과는 다음과 같습니다.

 

 

 

 

배정도(double precision) 방식에서는 64비트 부동소수점을 나타낼 때 1비트는 부호, 52비트는 가수, 11비트는 지수로 나타냅니다. (단정도 방식이때 127(2^7-1)을 더하고, 배정도 방식일 때 1023(2^10 - 1) 을 더합니다.)

 

'프로그래밍 > 자료구조' 카테고리의 다른 글

[자료구조 / 파이썬] 정수, int  (0) 2019.11.14

 

 

파이썬에서 정수는 int로 나타내며 불변(immutable)형입니다. 불변형 객체는 변수와 객체 참조 간에 차이가 없습니다. 파이썬 정수 크기는 컴퓨터 메모리에 의해 제한됩니다.

 

파이썬 정수 크기는 적어도 32비트 (4바이트) 입니다. 정수를 나타내는 데 필요한 수를 확인하려면 파이썬 3.1 이상에서 int.bit_length() 메서드를 사용할 수 있습니다.

 

 

 

어떤 문자열을 정수로 변환하거나, 다른 진법의 문자열을 정수(10진법)으로 변환하려면 int(string, base) 메서드를 이용하면 됩니다.

 

 

 

int 메서드의 밑은 2에서 36사이의 선택적 인수(optional argument)입니다. 문자열 s에서 base 범위의 숫자를 벗어나는 값을 입력하면, int 메서드에서 ValueError 예외가 발생하게 됩니다. 

 

+ Recent posts