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

Algorithmes et structures de données Discussion :

[Demande d'aide] Complément à deux et binaire


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java + Sys.Admin Debian
    Inscrit en
    mai 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 18
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java + Sys.Admin Debian
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [Demande d'aide] Complément à deux et binaire
    Bonjour, quelqu'un peut m'aider s'il vous plaît ? Je n'y arrive pas.

    Je dois dois écrire une fonction complément(b) qui calcule le complément à 2 d'un nombre binaire donné sous la forme d'un tableau de taille quelconque contenant uniquement les chiffres 1 et 0. La fonction renverra un nouveau tableau de même taille que b. Puis écrire une fonction binaire(n) qui convertit en binaire un entier n donné en base 10. Le résultat sera un tableau de 8 cases contenant chacune le chiffre 0 ou 1, tel que le bit de poids faible se trouve dans la case d'indice 0. On prendra soin de s'assurer que la fonction est uniquement appelée sur des nombres entre 0 et ...

    Pour la fonction du complément(b), je sais comment fonctionne le complément à 2, sauf que je ne sais pas comment inverser les 0 et les 1, le reste je sais faire pour ça.
    Pour la fonction du binaire(n), je sais convertir en binaire, sauf que je ne sais pas faire le reste.

    Merci par avance.

    Cordialement.

  2. #2
    Membre chevronné

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    1 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 1 160
    Points : 2 224
    Points
    2 224
    Billets dans le blog
    9
    Par défaut [Demande d'aide] Complément à deux et binaire
    Bonjour,

    Citation Envoyé par x9nico Voir le message
    ... je ne sais pas comment inverser les 0 et les 1, le reste je sais faire pour ça ...
    Il y a une solution expéditive: c'est de recourir à l'opérateur NOT ;
    (NOT x) conduit à l'entier y = (28 - 1) - x = 255 - x dans le cas d'un Byte,
    à l'entier z = (216 - 1) - x = 65535 - x s'il s'agit d'un Word.

    Nom : [2020-11-28].png
Affichages : 47
Taille : 8,2 Ko

    Mais cette solution n'est pas adaptée à l'énoncé de ton problème, qui se réfère à un nombre quelconque de chiffres;
    le plus simple est dans ce cas de remplacer le bit u (égal à 0 ou 1) par v = 1 - u ...
    ou si tu introduit des booléens de remplacer u (qui vaut True ou False) par (NOT u) ...
    ou si tu manipules des chaînes de caractères, de remplacer Char(i) par Char(97 - i) puisque i vaut 48 ('0') ou 49 ('1').

    Il y a des options logiques encore plus simples.

    PS Une précision m'avait échappé:
    Citation Envoyé par x9nico Voir le message
    ... Le résultat sera un tableau de 8 cases contenant chacune le chiffre 0 ou 1, tel que le bit de poids faible se trouve dans la case d'indice 0. On prendra soin de s'assurer que la fonction est uniquement appelée sur des nombres entre 0 et ...
    L'entier à traiter se trouve donc bien au format Byte., mais l'énoncé n'autorise pas le raccourci proposé.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java + Sys.Admin Debian
    Inscrit en
    mai 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 18
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java + Sys.Admin Debian
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour, déjà merci pour votre réponse.
    Ce que j'ai oublié de préciser, c'est que c'est en python.

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    septembre 2005
    Messages
    4 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : septembre 2005
    Messages : 4 613
    Points : 11 525
    Points
    11 525
    Par défaut
    Bonjour

    Citation Envoyé par x9nico Voir le message
    Ce que j'ai oublié de préciser, c'est que c'est en python.
    Un algorithme ne dépend pas du langage. Si tu as un problème de méthode, tu es au bon endroit. Si tu cherches les bonnes instructions, il faut aller dans le forum python.

    Citation Envoyé par wiwaxia Voir le message
    Il y a une solution expéditive: c'est de recourir à l'opérateur NOT ;
    Mon cher Wiwaxia, ne confondrais-tu pas le complément à 1 et le complément à 2 ? Parce qu'avec ton conseil, l'image de 0 est 255. Ce qui est faux.

    Le complément à 2 est ce qui permet de coder des nombres négatifs à partir des nombres positifs.

    (Complément à 2) = (complément à 1) + 1

    Autrement dit: Comment coder -16 ?
    16 : 0001 0000
    Complément à 1 de 16 (le fameux NOT(16) ) : 1110 1111
    Complément à 2 de 16 : 1111 0000

    Et on vérifie que l'on a juste :

    1610+ (-16)10 = 0001 00002 + 1111 00002 = (1) 0000 00002 = 010
    Tout est juste.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre averti Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    mars 2010
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : mars 2010
    Messages : 169
    Points : 378
    Points
    378
    Par défaut
    Bonjour,
    La réponse de Flodelarab est on ne peut plus claire.
    Le complément à 2 est utilisé en automatisme pour changer le signe d'un entier. La majorité des logiciels dédiés implémentent cette fonction à tel point que nombre d'automaticiens ont oubliés cette méthode.
    Si le but est de transmettre des données négatives d'un système à un autre, il faut aussi prendre garde à l'ordre de transmission des octets (Poids fort et poids faible)
    Belle journée...
    Windows 7 / Delphi Tokyo
    "Les choses ne changent pas. Change ta façon de les voir, cela suffit" Lao Tseu

  6. #6
    Membre chevronné

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    1 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 1 160
    Points : 2 224
    Points
    2 224
    Billets dans le blog
    9
    Par défaut Complément à deux et binaire
    Citation Envoyé par Flodelarab Voir le message
    ... Mon cher Wiwaxia, ne confondrais-tu pas le complément à 1 et le complément à 2 ? Parce qu'avec ton conseil, l'image de 0 est 255. Ce qui est faux.

    Le complément à 2 est ce qui permet de coder des nombres négatifs à partir des nombres positifs.

    (Complément à 2) = (complément à 1) + 1
    En effet, je me suis gouré en m'en tenant à l'inversion des bits. Mes excuses à x9nico, qui apportera la correction nécessaire.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

Discussions similaires

  1. Demande d'aide pour deux phrases d'accroches.
    Par hélios44 dans le forum CV
    Réponses: 2
    Dernier message: 11/12/2009, 17h44
  2. complément à deux d'un nombre binaire
    Par morbak.exe dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 28/02/2009, 14h36
  3. _winreg et binaire demande d'aide
    Par loupsolitaire dans le forum Général Python
    Réponses: 4
    Dernier message: 24/09/2007, 12h57
  4. demande d'aide sur samba
    Par marcoss dans le forum Développement
    Réponses: 5
    Dernier message: 04/12/2003, 20h38
  5. [TPW][cours]Demande d'aide pour finir un programme
    Par jf dans le forum Turbo Pascal
    Réponses: 21
    Dernier message: 16/06/2003, 19h10

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