2010-03-26 4 views
50

C++이 부호없는 이중 구문을 지원하지 않는 이유는 무엇입니까?C++에서 부호없는 double은?

+3

무엇을 지원합니까? 어떤 유형의 부동 소수점을 사용하는 경우 일반적으로 가정된다고 생각합니다. 그러면 부호없는 (unsigned) 사실상 절대 필요하지 않습니다. – SteelBytes

+0

안녕하세요, 구문 구문이 수정되었습니다. –

답변

62

일반적인 부동 소수점 형식은 부호없는 숫자를 지원하지 않기 때문에. 예를 들어, this list of IEEE 754 formats을 참조하십시오.

일반적인 하드웨어에서 지원되지 않는 숫자 형식을 추가하면 컴파일러 작성자의 삶이 어려워지고 아마도 그만한 가치는없는 것으로 보입니다.

+1

* 아이디어 *는 부동 소수점을 사용합니다. ** 무한대로의 음의 정수를 포함하여 ** 숫자가 표현 가능해야합니다. 서명되지 않은 숫자는이 목표에 역효과를 낳습니다. – unixman83

+26

음, 아니, 그게 중요한 게 아니야. 또는 그것이 요점이면, 모든 부동 소수점 타입은 실패 할 운명입니다. 컴퓨터에서 의미있는 방식으로 나타낼 수있는 일련의 수를 계산할 수 있습니다 ... –

13

대부분의 부동 소수점 하드웨어가 부호없는 부동 소수점 유형을 지원하지 않으므로 C++은 부호없는 부동 소수점 유형을 지원하지 않습니다. 일부 그래픽 카드는 부호없는 부동 소수점으로 작동하지만 일반적으로 내부이거나 프로그램이나 사용자에게는 보이지 않습니다.

7

부호없는 정수는 추가 비트를 얻고 부호가있는 정수와 약간 다른 비트 단위 의미를 갖습니다. 부동 소수점 및 복식은 항상 (대부분의 하드웨어에서) 부호에 대해 조금 비싸지 만 비트 단위의 의미 체계가 없으므로 부호없는 실제 유형을 갖는 데 실질적인 이점은 없습니다.

+9

이론적으로 * 가수 또는 지수에 대해이 비트를 사용할 수는 있지만 범위 나 정확도는 증가 할 수 있습니다. – Joey

+1

음 서명되지 않은 double은 항상 검사를 계속하지 않고 항상 양의 값을 갖기를 원했습니다. 그래, 그렇습니다. – Zammbi

+0

@ Јοеу : (늦은 응답으로 유감스럽게 생각합니다.) 예, 도움이 될 것입니다. 그러나 C++에서 부호없는 double이 부족하다는 문제가있었습니다. 하드웨어가 왜 그것을 지원하지 않는지에 관한 것이 아닙니다. 하드웨어에 대한 지원을 추가하지 않고 C++에 개념을 추가하면 아무 것도 얻을 수 없습니다. –

관련 문제