GMP 라이브러리에서 ....GMP .. 이진 실행
정수에서 연산의 내부 실행은 어떻게 이루어 집니까 ?? 6 = 0110,4 = 0100..and 6 + 4 = 0110 + 0100 .. 곱셈, 나누기 및 기타 연산의 경우 어떻게됩니까? 오버 플로우 비트 및 기타 사항을 어떻게 제어합니까?
GMP 라이브러리에서 ....GMP .. 이진 실행
정수에서 연산의 내부 실행은 어떻게 이루어 집니까 ?? 6 = 0110,4 = 0100..and 6 + 4 = 0110 + 0100 .. 곱셈, 나누기 및 기타 연산의 경우 어떻게됩니까? 오버 플로우 비트 및 기타 사항을 어떻게 제어합니까?
대부분의 기본 다중 정밀도 루틴은 특정 CPU 명령어를 사용하여 어셈블리 코드로 작성됩니다.
기본 명령은 "ADD-with-Carry"입니다. 이 명령어는 2 개의 CPU 레지스터와 캐리 비트의 내용을 추가 한 다음 결과를 레지스터에 저장하고 오버플로가 발생하면 캐리 비트를 설정합니다. 두 개의 다중 정밀도 숫자를 추가하기 위해 자리 올림 비트가 지워지고 각 다중 정밀도 값의 첫 번째 단어 (대개 C "부호없는 int"또는 "부호없는 long")가 추가되고 결과가 저장되며 캐리 비트 세트가 설정됩니다 다음 루프를 위해. 세부 사항은 크기가 다른 입력 등을 처리하는 데 사용됩니다.
기본 명령어 인 "MULT"는 두 개의 레지스터를 곱하고 그 결과의 상위 절반을 하나의 CPU 레지스터에 저장하고 결과의 아래쪽 절반을 다른 CPU에 저장합니다 레지스터.
실제로 CPU에서 수행되는 방법에 대한 자세한 내용은 CPU의 명령어 세트를 조사해야합니다.
내부 알고리즘에 대해서는 다음을 참조하십시오. http://gmplib.org/manual/Algorithms.html#Algorithms – tur1ng