IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

microprocesseurs langage C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut microprocesseurs langage C
    Bonjour,
    Ecrire un programme e langage C pour additione deux grands nombres (>255) [sous la forme (x,y) dans le brouillant pas dans le programme,donc (x,y) +(x',y') et il va nous donner le resultat (x+x',y+y')],on suppose que le pc connait pas les grands nombres (additioner deux tableaux)
    c'est ce que fait le systeme d'exploitation
    voila un exemple:
    on fait entrer (1,44) et on sait qu'elle signifie 300
    et (1,144) signifie 400
    1,44+1,144=2,584 qui doit etre 700
    si le nombre apres la vergule (584) est superieur a 255 on doit le placer dans la case qui suit
    (1,44)=300=100101100=(sur 16 bits) 0000000100101100
    (1,144)=400=110010000=0000000110010000
    s'il vous plait aidez moi,j'arrive pas a comprendre cet exercice

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par souzen Voir le message
    s'il vous plait aidez moi,j'arrive pas a comprendre cet exercice
    Ce n'est pas très difficile. Apparement, tu dois faire un programme qui gère des entiers de longueur arbitraire. Comme l'unité de base en informatique est l'octet, et que celui-ci peut prendre 256 valeurs différentes (de 0 à 255), et bien, tu vas les manipuler un par un.

    On va en fait considérer que tu travailles en base 256, où chaque octet correspond à un chiffre. Du coup, ton (1,44) = 300 s'explique par le fait qu'il s'agit en fait de 1 x 256 + 44 x 1 = 256 + 44 = 300.

    Ensuite, tu procèdes à une addition ordinaire, comme si tu la posais sur papier.

    Donc, tu fais deux tableaux de n cases (ici, deux cases chacun), plus un pour le résultat et tu commences par les cases les plus à droite (poids faible). Tu additionnes leur contenu, et tu stockes le résultat dans la case la plus à droite, également, du tableau de sortie. Toutefois, si ton résultat dépasse 256, ben tu poses les 8 bits de poids faible - autrement dit, ton résultat modulo 256 - et tu retiens les huit autres - soit le résultat divisé par 256 -.

    Bon courage.

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Toutefois, si ton résultat dépasse 256, ben tu poses les 8 bits de poids faible - autrement dit, ton résultat modulo 256 - et tu retiens les huit autres - soit le résultat divisé par 256 -.
    (je me permet de finir la brillante explication): puis tu propage la retenue sur l'addition de la case suivante.

    Soit quelque chose comme ça:
    case=case la plus à droite
    retenu=0
    Faire:
    Additionner case courante de nombre1, case courante de nombre2 et retenu
    Si résultat courant<256, case courante de resultat est résultat courant et retenu est 0
    Sinon
    case courante de resultat est résultat courant modulo 256
    retenu est résultat courant /256
    passer à la case suivante
    Tant qu'on n'a pas épuisée toutes les cases de nombre1, nombre2: ne pas oublier la dernière retenue et ne pas oublier de gérer un nombre de cases différentes entre nombre1 et nombre2.

    Bon courage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exercices en langage assembleur du microprocesseur 8086
    Par lorye dans le forum x86 16-bits
    Réponses: 1
    Dernier message: 10/01/2009, 18h04
  2. [langage] Je cherche un bon livre ?
    Par Anonymous dans le forum Langage
    Réponses: 13
    Dernier message: 09/04/2003, 13h16
  3. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33
  4. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37
  5. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo