Soustraction de nombres geants

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
kelly
Messages : 176
Inscription : jeu. 09/sept./2004 16:15

Soustraction de nombres geants

Message par kelly »

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.
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message 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.
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

aie

decidement.
Ce post peut etre eliminé
sorry
Pour une fois que je trouve quelquechose d'intelligent à répondre :lol:
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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.! :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Nico a raison !

et moi je me propose pour te mettre la fessé cul nue ! :D
kelly
Messages : 176
Inscription : jeu. 09/sept./2004 16:15

Message 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.
Répondre