Pergunta

Na biblioteca GMP ....

Como a execução interna das operações no números inteiros será feita? Como 6 = 0110,4 = 0100..e 6+4 = 0110+0100 .. O que acontece em caso de multiplicações, divisão e outras operações! ?? Como isso controla bits de transbordamento e outras coisas ...

Foi útil?

Solução

A maioria das rotinas básicas de precisão múltipla são escritas no código de montagem e aproveite as instruções específicas da CPU.

Para adicionar, a instrução básica é "add-with-carrery". Esta instrução adicionará o conteúdo de dois registros da CPU e o bit de transporte e salvará o resultado em um registro e define o bit de transporte se houver transbordamento. Para adicionar dois números de precisão múltipla, o bit de transporte é limpo, então a primeira palavra (geralmente um c "não assinada int" ou "não assinada longa") em cada valor múltiplo de precisão é adicionado, o resultado salvo e o conjunto de bits de transporte Para o próximo loop. Os detalhes estão em lidar com entradas de tamanho diferente, etc.

Para multiplicação, a instrução básica "multi" apenas multiplica dois registros e armazena a metade superior do resultado em um registro da CPU e na metade inferior do resultado em outro registro da CPU.

Para detalhes sobre como ele é realmente feito em uma CPU, você precisará pesquisar o conjunto de instruções da CPU.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top