2013-05-03 4 views
2

C++에서 양수 및 음수 무한대에 대해 읽었습니다.C++의 정수 유형에 대해 양수 및 음수 무한대

필자는 정수형은 무한한 값을 갖지 않는다는 것을 읽었습니다. std::numeric_limits<int>::infinity();은 작동하지 않지만 std::numeric_limits<int>::max();은 작동하며 정수형으로 표시 할 수있는 최대 값을 나타냅니다.

따라서 통합형 std::numeric_limits<int>::max();positive infinite limit으로 간주 될 수 있습니까?

또는 정수형은 max value이고 infinity value은 사실이 아닙니다.

+0

은 내가 아는 모든 데이터 유형이 한정되어 (모든 입력 실수는 나의 ​​것이). 최대 값은 유한 값입니다 (예 : 32 비트). – fonZ

+0

무한한 한계를 포함하는 정수에서 수행 할 작업을 설명 할 수 있습니까? –

+0

모든 값에 임의의 의미를 연결할 수 있습니다. '567'을 NaN으로 간주 할 수도 있습니다. 그러나 표준에 대한 제안 (기본)은 없습니다. 문제는 오히려 무엇을 달성하기를 원합니까? –

답변

2

부동 소수점 숫자에는 "값이 무한대"임을 나타내는 특수 비트 패턴이 있습니다.이 비트 패턴은 일부 연산 결과가 무한대로 정의 될 때 사용됩니다.

정수 값은 설정된 비트 수를 가지며 모든 비트는 숫자 값을 나타내는 데 사용됩니다. "특수 비트 패턴"이 없으며, 비트 위치의 합계가 무엇이든 상관 없습니다.

편집 : AMD64 아키텍처 프로그래머 매뉴얼의 내 하드 카피의 315 페이지에, 그것은

무한대를 말한다. 무한대는 양수 또는 음수 ∞ 및 - ∞이며 정수 비트는 1이고 바이어스 된 지수는 최대이며 분수는 0입니다. infintes는 부동 소수점 형식으로 표현할 수있는 최대 수이며 음의 무한대입니다 임의의 유한 숫자보다 더 작은 이고 양의 무한대는 임의의 숫자 (즉, 아핀 의미)보다 큽니다.

무한 결과는 비 - 제로가 아닌 무한 개수 무한대가 0으로 나눈 또는 곱한 생성, 또는 무한대가 무한대 또는 0 산술 infinites에 추가 될 때 실제이다. 예를 들어 을 임의의 부동 소수점 수를 + ∞에 추가하면 결과는 + ∞ 무한대에서 올바르게 계산됩니다. 소스 피연산자로 무한대를 사용하면 잘못된 연산을 구성하는 경우에만 예외가 발생합니다.

+0

"NaN"은 "숫자가 아님"이라고 생각하십니까? '-1/0'만큼''1/0'만큼''NaN'을 반환하기 때문에 올바른 해석이라고 생각하지 않습니다. –

+2

아니요, NaN이 다릅니다. 위의 추가 된 인용문을 참조하십시오 (의견이 너무 큼). NaN은 비슷한 인코딩이지만 소수는 0이 아니며 실제로 NaN의 여러 변형이 있습니다. –

+0

모든 세부 사항 +1 –

3

정수는 항상 유한합니다.

당신이 찾고있는 것 중 가장 가까운 것은 정수를 최대 값으로 설정하는 것입니다. 부호있는 정수의 경우 약 20 억 개 정도입니다.

std :: numeric_limits에는 원하는 유형에 float 및 double과 같은 부동 소수점 숫자 만있는 무한대 표현이 있는지 확인하는 데 사용할 수있는 has_infinity 멤버가 있습니다.