Soustraction de nombres geants
Soustraction de nombres geants
Comment soustraire un grand nombre avec un autre; etant donné que ces nombres sont tronconné dans des banques d'octets ?
Dernière modification par kelly le mer. 28/sept./2005 5:14, modifié 1 fois.
Si tu parle bien d'entiers non signés sur 5 octets, je verrais qlqchose comme ça:
J'espère que c'est lisible malgrès la profusion de commentaires
Si tu veux le recoder en assembleur, tu pourrais utiliser SBB.
Code : Tout sélectionner
Structure int40bits
b.b[5]
EndStructure
Procedure sub_int40bits(*res.int40bits, *oper_1.int40bits, *oper_2.int40bits)
For i=0 To 4
tmp = (*oper_1\b[i]&255) - (*oper_2\b[i]&255) + retenue
*res\b[i] = tmp
retenue = tmp >> 8
Next
EndProcedure
Procedure valhex_int40bits(*res.int40bits, numer$)
For i=0 To 4 : *res\b[i] = 0 : Next
index = 1
Repeat
chiffre = Asc(UCase(Mid(numer$, index, 1)))
index +1
If chiffre >= '0' And chiffre <= '9'
retenue = chiffre - '0'
ElseIf chiffre >= 'A' And chiffre <= 'F'
retenue = chiffre - 'A' + 10
Else
ProcedureReturn
EndIf
For i=0 To 4
tmp = (*res\b[i]<<4) | retenue
*res\b[i] = tmp
retenue = (tmp>>8) & 15
Next
ForEver
EndProcedure
Procedure.s hex_int40bits(*n.int40bits)
For i=4 To 0 Step -1
r$ + RSet(Right(Hex(*n\b[i]), 2), 2, "0")
Next
ProcedureReturn r$
EndProcedure
OpenConsole()
Repeat
PrintN(Chr(1)+Chr(2)+Chr(1))
PrintN("Entrez 2 nombres en hexad"+Chr(130)+"cimal :")
valhex_int40bits(@op1.int40bits, Input()) : PrintN("")
valhex_int40bits(@op2.int40bits, Input()) : PrintN("")
sub_int40bits(@r.int40bits, @op1, @op2)
PrintN(hex_int40bits(@op1)+" - "+hex_int40bits(@op2)+" = "+hex_int40bits(@r))
ForEver

Si tu veux le recoder en assembleur, tu pourrais utiliser SBB.
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Je ne vais pas éléminer ce post alors qu'une personne s'est donnée la peine d'y répondre.
La dernière fois, je l'ai fait parce qu'il n'y avait pas de message, évite ce genre de pratique c'est énervant.
Et puis si toi même tu trouves la réponse, il me semble que tu devrais poster ta solution, ça me parait la moindre des choses. Ce n'est pas parce que tu n'as pas de réponse que des gens n'ont pas chercher à t'aider.
C'est un forum d'échange.!
La dernière fois, je l'ai fait parce qu'il n'y avait pas de message, évite ce genre de pratique c'est énervant.
Et puis si toi même tu trouves la réponse, il me semble que tu devrais poster ta solution, ça me parait la moindre des choses. Ce n'est pas parce que tu n'as pas de réponse que des gens n'ont pas chercher à t'aider.

C'est un forum d'échange.!
