(IEEE754) 부동소수점 나타내기
컴퓨터에서 부동소수점을 나타내는 방식으로 IEEE 754를 사용하고 있습니다.
초창기의 컴퓨터는 모두 자체적인 방식으로 부동소수점을 표현했지만, 1980년대에 표준을 정립합으로써 지금의 컴퓨터는 모두 같은 형식으로 부동소수점을 표현하고 있습니다.
|
|
32비트 부동소수점 |
64비트 부동소수점 |
|
부호 |
1비트 |
1비트 |
|
지수 |
8비트 |
11비트 |
|
가수 |
23비트 |
52비트 |
|
바이어스(Bias) |
127 |
1023 |
(1) -0.75
* 2진수로 변환 : -0.11
* 정규화 : -1.1 x 2^(-1)
(정규화를 통해서 1.xxxx 의 형식으로 만든다)
* -1.1 x 2^(-1) 에서 빨간색으로 표시된 부분만을 취한다
* 32비트 부동소수점
- 부호 : 1 (양수=0, 음수=1)
- 지수 : 126 (Bias+(-1))
- 가수 : 1
- 1 01111110 10000000000000000000000
* 64비트 부동소수점
- 부호 : 1 (양수=0, 음수=1)
- 지수 : 1022 (Bias+(-1))
- 가수 : 1
- 1 01111111110 1000000000000000000000000000000000000000000000000000
(2) 65.75
* 2진수로 변환 : +1000001.11
* 정규화 : +1.00000111 x 2^(6)
(정규화를 통해서 1.xxxx 의 형식으로 만든다)
* +1.00000111 x 2^(6) 에서 빨간색으로 표시된 부분만을 취한다
*32비트 부동소수점
- 부호 : 0 (양수=0, 음수=1)
- 지수 : 133 (Bias+(6))
- 가수 : 00000111
- 0 10000101 00000111000000000000000
* 64비트 부동소수점
- 부호 : 0 (양수=0, 음수=1)
- 지수 : 1029 (Bias+(6))
- 가수 : 1
- 0 100000000101 0000011100000000000000000000000000000000000000000000
(3) -170.625
* 2진수로 변환 : -10101010.101
* 정규화 : -1.0101010101 x 2^(7)
(정규화를 통해서 1.xxxx 의 형식으로 만든다)
* -1.0101010101 x 2^(7) 에서 빨간색으로 표시된 부분만을 취한다
*32비트 부동소수점
- 부호 : 1 (양수=0, 음수=1)
- 지수 : 134 (Bias+(7))
- 가수 : 0101010101
- 1 10000110 01010101010000000000000
* 64비트 부동소수점
- 부호 : 1 (양수=0, 음수=1)
- 지수 : 1030 (Bias+(7))
- 가수 : 0101010101
- 1 100000000110 0101010101000000000000000000000000000000000000000000
2진수의 음수표현방식
2진수에서 음수를 표현하는 방식으로는 부호화된 절대값, 1의 보수, 2의 보수 표현 방식이 있습니다. 우리가 매일 접하는 컴퓨터는 내부적으로 2진수를 사용하고 있고, 당연히 위에서 말한것중에 1가지 방식으로 음수를 표현하게 됩니다. 최근 나오는 컴퓨터들은 전부 2의 보수 표현 방식을 사용하고 있습니다. 때문에 전산학에 나오는 2진수들은 2의 보수로 표현되었구나 라고 생각하시면 될것 같습니다.
각각의 표현방식에서의 숫자표현을 간략하게 살펴보면 다음과 같습니다
|
부호화된 절대값 |
1의 보수 |
2의 보수 |
|
000 = +0 |
000 = +0 |
000 = +0 |
|
001 = +1 |
001 = +1 |
001 = +1 |
|
010 = +2 |
010 = +2 |
010 = +2 |
|
011 = +3 |
011 = +3 |
011 = +3 |
|
100 = -0 |
100 = -3 |
100 = -4 |
|
101 = -1 |
101 = -2 |
101 = -3 |
|
110 = -2 |
110 = -1 |
110 = -2 |
|
111 = -3 |
111 = -0 |
111 = -1 |
표를 살펴보면 각 표현방식에서의 양수 표현은 전부 같음을 알 수 있으며, 표현식마다 음수와 0의 표현이 다름을 알 수 있습니다.
1. 부호화된 절대값 (Sign Magnitude)
이 표현방식은 최상의비트(MSB)를 조절함으로써 음수와 양수를 표현하는 방식입니다. 때문에 최상의비트를 다르게 함으로써 음수,양수를 표현할수 있습니다. 또한 0이 +0과 -0으로 2개 존재함을 알 수 있습니다.
2. 1의 보수 (One's Complements)
이 표현방식은 약간의 공식을 필요로 합니다. "양수에 역수를 취하면 음수가 된다" 입니다. 즉, 각각의 비트를 1->0, 0->1 로 바꿔주시면 됩니다. 이 표현 방식 또한 0이 +0과 -0으로 2개 존재함을 알 수 있습니다.
1의 보수 표현방식에서 +40과 -40의 표현은 다음과 같습니다.
00101000 (10진수 +40)
11010111 (10진수 -40)
3. 2의 보수 (Two's Complements)
이 표현방식은 1의 보수표현방식을 근간으로 하고 있습니다. "1의 보수를 취한값에 +1을 한다" 입니다.
2의 보수 표현방식에서 +40과 -40의 표현은 다음과 같습니다.
00101000 (10진수 +40)
11011000 (10진수 -40)
[과정]
- 00101000 의 1의 보수 = 11010111
- 11010111 + 1 = 11011000
전산과 학생이라면 2의 보수만을 알아두셔도 상관이 없을거라고 판단됩니다. 2의 보수외에는 써본적도 없었고, 알아야될 필요성도 느끼지 못했었네요. 시험볼때만 필요했었군요.
덕분에 잘 배우고 갑니다. 감사합니다.
(^^)(__)