2010-08-05 2 views
1

"부호없는 long long"크기를 넘는 변수는 C 또는 임의의 프로그래밍 언어로 표현됩니다. 무한대를 나타내는 변수 유형이 있습니까?C 및 무한대 크기 변수

답변

3

두 수레와 복식 무한대에 대한 표현이있다. 적분 유형에는이 언어에 내장 된 용량이 없지만 필요할 경우 INT_MAX 또는 LONG_MAX을 할당하는 데 사용할 수있는 트릭이 limits.h에서 있습니다.

물론 이렇게하려면 계산을 완전히 제어해야합니다. 그 값으로 끝나고 거기에서 무한대로 처리되는 일반 계산을 원하지는 않습니다.

네이티브 형식으로 나타낼 수있는 것보다 큰 숫자의 경우 GMP과 같은 임의의 정밀도 수학 라이브러리를 사용할 수 있습니다.

2

숫자 무한대를 나타내는 것과 단일 네이티브 데이터 형식에 맞지 않는 숫자를 사용하는 것에 대해 이야기하고 있습니까? 후자의 경우 더 큰 수를 나타내는 데이터 구조를 생성하고 이러한 구조에 대해 산술을 구현하는 고유 한 논리를 작성할 수 있습니다.

나는이 문제를 기본 수준 인 Project Euler에서 수행했습니다. 제 접근 방식은 초등 학교에서 사용되는 알고리즘을 확장하여 하나의 자리 숫자와 일부 나머지, 나머지, 차용 등을 사용하여 여러 자리 숫자로 작업을 수행하도록했습니다.

또한 wikipedia article on arbitrary-precision arithmetic에 관심이 있으실 것입니다.

0

unsigned long long는 C 표준 정수 타입의 가장 큰,이보다 큰 값을 표현한다 표준 C에는 정수이 존재하지 않는 적어도 2 64 – 1 나타낼 수 있어야한다. 일부 구현은 확장으로 더 큰 유형을 제공 할 수 있지만, 의존 할 수는 없습니다. 당신이 (예를 들어, ULLONG_MAX)를 그 목적을 위해 특정 비트 패턴을 할애하지 않는

test.c:3: error: ‘long long long’ is too long for GCC

표준 정수 유형은 무한대의 표시 수 없습니다. 부동 소수점 형식에는 무한대에 대한 표현이 있다고 생각합니다. 부동 소수점 유형이 표준 C isinf 매크로를 사용하여 무한대인지 확인할 수 있으며 INFINITY 매크로를 사용하여 부동 소수점 유형을 무한대로 설정할 수 있습니다. 표준 C는 부동 소수점 형식이 양수 인 무한대 인 을 나타낼 수 있도록 요구하지 않는다고 생각합니다.

+0

C 표준은이를 요구하지 않지만 IEEE-754는이를 요구할 수 있습니다. 다음 페이지에서 무한 검색 : http://steve.hollasch.net/cgindex/coding/ieeefloat.html – George