Soustraction de nombres geants
Publié : lun. 26/sept./2005 19:51
Comment soustraire un grand nombre avec un autre; etant donné que ces nombres sont tronconné dans des banques d'octets ?
Forums PureBasic - Français
http://forums.purebasic.com/french/
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
Pour une fois que je trouve quelquechose d'intelligent à répondreaie
decidement.
Ce post peut etre eliminé
sorry