부동 소수점 표현이 음수를 나타 내기 위해 2의 보수 대신 부호 비트를 사용하는 이유


20

부동 소수의 변성 사례로 간주 될 수있는 고정 소수점 표현을 고려하십시오. 음수에 2의 보수를 사용하는 것은 전적으로 가능합니다. 그러나 부동 소수점 숫자에 부호 비트가 필요한 이유는 무엇입니까? 가수 비트가 2의 보수를 사용해서는 안됩니까?

또한 지수 비트가 부호있는 크기 표현 (가수 비트와 유사) 또는 2의 보수 표현 대신 바이어스를 사용하는 이유는 무엇입니까?

업데이트 : 명확하지 않으면 죄송합니다. 부동 소수점 표현이 형성되는 이유를 찾고있었습니다. 대안들 사이에 강력한 구현 상충 관계가 없다면 누군가 부동 소수점 표현의 역사적 측면을 설명 할 수 있습니까?

답변:


7

2의 보수는 문제의 두 개체가 동일한 "단위"와 동일한 "폭"을 가질 때 의미가 있습니다. 너비와 관련하여 N과 M이 다른 N 비트 번호와 M 비트 번호를 추가하는 경우 2의 보수를 사용하지 않는 것이 좋습니다. 부동 소수점 숫자의 경우 단위 문제가 있습니다. 지수가 다르면 정신적으로 가수 중 하나를 이동하고 이제 너비와 함께 이전과 같은 문제가 있습니다.

지수 비트의 경우 부호 + 크기 대신 바이어스를 사용하여 하나 이상의 값을 얻습니다 (그렇지 않으면 +0 및 -0을 갖습니다). 여기에 2의 보수는 숫자를 곱하거나 나눌 때 의미가 있지만 (따라서 지수를 더하거나 빼기 때문에) 더하기 또는 빼기에는별로 의미가 없습니다.

편집 : 한 의견자는 부호 확장을 사용하여 길이가 다른 2의 보수 정수를 추가 할 수 있다고 말했습니다. 오버플로를 감지하는 데에도 문제가 있지만 해결할 수도 있습니다. 요약하면 충분히주의하면 2의 보수를 사용할 수 있습니다. (곱셈과 나눗셈도 처리해야합니다.)


4
"N과 M이 다른 N 비트 번호와 M 비트 번호를 추가하는 경우 2의 보수를 사용하지 않는 것이 좋습니다." MSB를 사용하여 2의 보수 표현을 사용하여 숫자를 부호 확장하는 것이 전적으로 가능하다고 생각합니다. 부동 소수점 산술 논리 내에서 기존 배럴 시프터에 이것을 추가하는 것이 간단하지 않습니까?
koo

답변 주셔서 감사합니다! 질문을 편집하여 현재 부동 소수점을 만드는 것이 무엇인지 더 명확하게 묻습니다.
koo

4

Wikipedia에서 :

2의 보수 시스템은 덧셈, 뺄셈 및 곱셈의 기본 산술 연산이 부호없는 이진수의 연산과 동일하다는 이점이 있습니다 ...

2의 보수는 매우 편리한 음수를 나타냅니다 . 그것이 전혀 사용하는 이유입니다.

가수-지수 쌍은 부동 소수점 숫자를 나타냅니다. 부동 소수점 숫자를 사용할 때 대부분의 경우 가수 또는 지수에서만 산술을 수행하지 않습니다.


4

그러나 부동 소수점 숫자에 부호 비트가 필요한 이유

틀린 가정. 필요하지 않습니다. 나는 가수를 위해 2의 보수를 사용하는 부동 소수점 형식을 만났다고 확신하지만 이름을 찾아야합니다.

저는 수치 분석 전문가가 아닙니다. 제로에 서명하는 것이 중요합니다. 보완하는 것보다 조작하는 것이 더 쉽습니다. 그것은 아마도 IEEE-754에 대한 선택의 기준이었습니다.

또한 지수 비트가 부호있는 크기 표현 대신 바이어스를 사용하는 이유

다시 말하지만 그것은 필요하지 않은 것이고 일부는 다르게 일을했습니다.

지수에서 수행되는 일련의 작업에 대해 하드웨어 구현을 더 쉽게 수행 할 수있는 표현입니다 (여기서 -0에 대한 표현을 원하지 않음).

그 선택의 결과 중 하나는 NaN에 신경 쓰지 않는다면 부호있는 정수 비교를 사용하여 FP 번호를 비교할 수 있다는 것입니다. IEEE-754 용).


부호있는 정수 비교는 음의 FP 숫자를 거꾸로 순위를 매 깁니다. 그들이 적절하게 순위를 매기 위해서는 어떤 종류의 보수 형식이 필요할 것이고, 아마도 1의 보수가 최고 일 것입니다 (음수는 ... 110.1111 ..., 왼쪽 오른쪽에 무한한 것 ).
supercat

3
MIL-STD-1750A 는 2의 보수 부동 소수점 표현을 지정하는 가장 널리 사용되는 프로세서 아키텍처 일 것입니다. 섹션 4.1에서 : "명령 세트는 2의 보수 표현으로 16 비트 고정 소수점 단정도, 32 비트 고정 소수점 배정도, 32 비트 부동 소수점 및 48 비트 부동 소수점 확장 정밀도 데이터를 지원해야합니다. "(강조 광산) .
njuffa

2

IEEE 754는 2의 보수 또는 1의 보수가 아닌 부호 / 크기를 사용합니다.

2의 보수는 양의 범위와 음의 범위가 동일하지 않다는 단점이 있습니다. 모든 비트 패턴이 유효하면 -x를 쉽게 계산할 수없는 숫자 x가 있습니다. 그 나쁜. 대안은 유효하지 않은 비트 패턴이 있다는 것입니다. IEEE 754에는 64 비트 또는 32 비트 부동 소수점에 대해 유효하지 않은 비트 패턴이 없으므로 걱정할 필요가 없습니다.

1의 보수는 곱하기 / 나누기를 더 복잡하게 만듭니다 (부호있는 크기로 부호를 xor하고 가수를 부호없는 숫자로 취급합니다). 더하기와 빼기의 경우, 실제로 보완하기 위해 더하기와 빼기를 생각하고 싶지 않아 머리가 아파요.


이 답변의 첫 번째 단락은 부호 / 크기에 단점이 없음을 나타냅니다. 부호 / 크기는 +/- 0이며 2의 보수보다 복잡한 산술을 갖습니다.
Praxeolitic

+/- 0을 갖는 것은 문제이자 기능입니다. 예를 들어, 작은 숫자 x를 10 ^ 100으로 나누면 x의 부호를 유지하면서 +0 또는 -0이 표시됩니다.
gnasher729

1

부호가 0이면 숫자 계산에 유용 할 수있는 표현력이 향상됩니다. Wikipedia 페이지 ' Signed zero '는 다음과 같이 말합니다.

IEEE 754에 부호있는 0을 포함하면 특히 복잡한 기본 기능을 사용 하여 계산할 때 몇 가지 중요한 문제에서 수치 정확도 를 훨씬 쉽게 달성 할 수 있다고 주장합니다 .

IEEE 754 부동 소수점의 주요 설계자 중 하나 인 WH Kahan 은 이러한 이유로 부호없는 0의 지지자입니다. 그의 의견은 많은 무게를 지녔을 것이다.


1

부동 소수점 계산은 정확한 값이 아니라 대략적인 값을 생성한다는 것을 이해하는 것이 중요하다고 생각 합니다. 즉, 부동 소수점 계산이 인코딩 된 값 X를 산출하는 경우 이론적으로 이상적인 값 은 거의 확실하지만 X는 아니지만 [X .. X + e) ​​{범위입니다. 여기서 'e'는 ' 기계 epsilon ', 즉 X와 X + e 사이에 부동 소수점 숫자가 없습니다}. 보다 구체적으로, 부동 소수점 0은 아마도 정확히 0은 아니지만 0이 아닌 부동 소수점 인코딩 값으로 표현하기에는 너무 작은 이상적인 숫자를 나타냅니다.

부호와 크기 표현을 사용하는 것은 인코딩 이 이상적인 값이있는 0 의 양, 양 또는 음을 정확히 '기억'하는 방법입니다 . 이는 특정 복잡한 ( 'a + bi'의미) 계산에서 중요합니다. 복잡한> 복합 함수는 종종 '다중 값'이므로 적절한 계산을 위해서는 '분기 컷'위치에주의를 기울여야합니다. 그런 다음 0으로 부호가 표시되면이 분기 컷의 위치가 표시됩니다. 양의 측에서 수행 된 계산은 음의 측에서 계산과 다릅니다.


1
부동 소수점 계산은 정확한 값을 생성 합니다. 수학적 실수가 생성하는 값과 약간 다릅니다. 부동 소수점 숫자는 범위가 아니라 하나의 숫자를 나타냅니다.
gnasher729

0

대부분의 부동 소수점 형식은 2 진 시스템에서 최소 지수가 아닌 0이 아닌 값은 가수의 가장 중요한 비트로 "1"을 갖는다는 사실을 이용합니다. 따라서, 가수에 대한 23 비트 필드를 갖는 시스템에서, 양수의 가수는 0 내지 8,388,607의 범위가 아니라 8,388,608 내지 16,777,215의 범위이다. 양수일 수도 있고 아닐 수도있는 숫자의 가수는 -16,777,215에서 -8,388,608 및 +8,388,608에서 +16,777,215의 범위입니다. 2의 보수는 "매끄럽게"0과 교차하는 계산이 필요할 때 최상의 숫자 형식이지만, 불연속 가수 값 범위는 2의 보수를 사용하든 다른 것을 사용하든 0을 가로 질러 원활하게 작동 할 수 없음을 의미합니다. .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.