2010-03-22 7 views
2

GMP에서 선언 된 변수의 크기를 아는 방법 ?? 또는 GMP에서 정수의 크기를 결정하는 방법은 무엇입니까? 설명서GMP 변수의 비트 크기

mpz_random(temp,1); 

가이 기능은 "온도".... 로 (내 샘플 콘텐츠에 대해 =의 32 비트) 크기 1limb를 할당하지만 9 자리 숫자만을 갖는 것이 주어진다 .. 그렇게 생각 해달라고 그 32 비트 크기 번호는 9 자리 번호를 .. 보유

그래서 .. GMP의 정수 변수 .. ADV에서

감사의 크기를 알고

답변

3

32 비트 (4 바이트) 저를 도와주세요 실제로 9 자리 숫자 만 저장하는 데 사용할 수 있습니다

2^32 = 4 294 967 296 

여기에는 전체 10 진수 (여기에서 10은 0부터 4까지의 간격이므로 전체가 아닙니다)입니다.

당신은 대수을 통해이 문제를 다시 계산 할 수 있습니다

log_10(2^32) 

이의이

log base 10(2^32) = 9.63295986 

모두가 올바른 구글 물어 보자.

1

디버거에서 팔다리 수를 확인할 수 있습니다. GMP 정수에는 변수의 현재 값을 저장하는 데 사용되는 팔다리 수 (0은 특별한 경우 : _mp_size = 0로 표시됨) 인 내부 필드 '_mp_size'가 있습니다. 여기에 내가 비주얼 C에서 실행 한 예이기 ++ (나의 기사 How to Install and Run GMP on Windows Using MPIR 참조)

 
mpz_set_ui(temp, 1073741824); //2^30, (_mp_size = 1) 
mpz_mul(temp,temp,temp); //2^60 (_mp_size = 2) 
mpz_mul(temp,temp,temp); //2^120 (_mp_size = 4) 
+0

참으로 ... 당신은 ... 올바른 정수의 사지의 수를 반환 _mp_size .. 우리가 크기 1limb (32 비트), 2limbs (이 64bit), 3limbs (96bits)의 정수를 만들 수 있다는 것을 의미 . ..곧. 우리는 32 비트의 배수가 아닌 8 비트 또는 16 비트 크기의 정수 변수를 만듭니다. – kishorebjv

4

mpz_sizeinbase(num, 2)이 '사용'비트 당신에게 크기를 줄 것이다.