Page 1 sur 1

Soustraction de nombres geants

Publié : lun. 26/sept./2005 19:51
par kelly
Comment soustraire un grand nombre avec un autre; etant donné que ces nombres sont tronconné dans des banques d'octets ?

Publié : lun. 26/sept./2005 22:38
par filperj
Si tu parle bien d'entiers non signés sur 5 octets, je verrais qlqchose comme ça:

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
J'espère que c'est lisible malgrès la profusion de commentaires :roll:

Si tu veux le recoder en assembleur, tu pourrais utiliser SBB.

Publié : lun. 26/sept./2005 22:40
par filperj
aie

decidement.
Ce post peut etre eliminé
sorry
Pour une fois que je trouve quelquechose d'intelligent à répondre :lol:

Publié : mar. 27/sept./2005 9:04
par nico
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. :evil:

C'est un forum d'échange.! :)

Publié : mar. 27/sept./2005 10:32
par Backup
Nico a raison !

et moi je me propose pour te mettre la fessé cul nue ! :D

Publié : mar. 27/sept./2005 11:36
par kelly
Ok donc, ce post demandait comment on soustrait un grand nombre avec un autre; etant donné que ces nombres sont tronconné dans des banques d'octets.
Voila voila.