2010-01-27 5 views
1

GMP 라이브러리에서 ....GMP .. 이진 실행

정수에서 연산의 내부 실행은 어떻게 이루어 집니까 ?? 6 = 0110,4 = 0100..and 6 + 4 = 0110 + 0100 .. 곱셈, 나누기 및 기타 연산의 경우 어떻게됩니까? 오버 플로우 비트 및 기타 사항을 어떻게 제어합니까?

+0

내부 알고리즘에 대해서는 다음을 참조하십시오. http://gmplib.org/manual/Algorithms.html#Algorithms – tur1ng

답변

0

대부분의 기본 다중 정밀도 루틴은 특정 CPU 명령어를 사용하여 어셈블리 코드로 작성됩니다.

기본 명령은 "ADD-with-Carry"입니다. 이 명령어는 2 개의 CPU 레지스터와 캐리 비트의 내용을 추가 한 다음 결과를 레지스터에 저장하고 오버플로가 발생하면 캐리 비트를 설정합니다. 두 개의 다중 정밀도 숫자를 추가하기 위해 자리 올림 비트가 지워지고 각 다중 정밀도 값의 첫 번째 단어 (대개 C "부호없는 int"또는 "부호없는 long")가 추가되고 결과가 저장되며 캐리 비트 세트가 설정됩니다 다음 루프를 위해. 세부 사항은 크기가 다른 입력 등을 처리하는 데 사용됩니다.

기본 명령어 인 "MULT"는 두 개의 레지스터를 곱하고 그 결과의 상위 절반을 하나의 CPU 레지스터에 저장하고 결과의 아래쪽 절반을 다른 CPU에 저장합니다 레지스터.

실제로 CPU에서 수행되는 방법에 대한 자세한 내용은 CPU의 명령어 세트를 조사해야합니다.

관련 문제