Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

Algorithme pour complément à deux

Posté par
DLLKEVIN
07-06-16 à 15:35

Bonjour
Au fait j'ai un exercice qui me demande d'écrire un programme pour faire le complément à  deux d'un nombre entier.
En premier je convertis ce nombre en binaire puis j'inverse tous les bits pour le complément à  un.  Mais pour ensuite afficher le complément à  deux il faut que j'ajoute +1 au complément à  un.  D'où mon soucis , Quelqu'un pourrait  bien m'aider SVP ?
Merci d'avance

Posté par
bbomaths
re : Algorithme pour complément à deux 07-06-16 à 16:34

Bonjour.

Entrer le nombre de bits utilisés : 4, 8, 16, 32, etc.

Entrer le nombre décimal N à convertir

Si N >= 0 : convertir N en binaire

Si N < 0 : convertir la valeur absolue en binaire, passer les 1 en 0 et les 0 en 1, ajouter 1, ne garder que les N bits de droite.

Rappels :

R1 : le bit le plus à gauche est le bit de signe (0 ~ positif, 1 ~ négatif)

R2 : sur n bits, on ne peut coder que des nombres décimaux compris entre 2^(n-1) - 1 et -(2^n)

Posté par
bbomaths
re : Algorithme pour complément à deux 07-06-16 à 16:36

petite correction...

Entrer le nombre de bits utilisés n : 4, 8, 16, 32, etc.

Entrer le nombre décimal N à convertir

Si N >= 0 : convertir N en binaire

Si N < 0 : convertir la valeur absolue en binaire, passer les 1 en 0 et les 0 en 1, ajouter 1, ne garder que les n bits de droite.

Rappels :

R1 : le bit le plus à gauche est le bit de signe (0 ~ positif, 1 ~ négatif)

R2 : sur n bits, on ne peut coder que des nombres décimaux compris entre 2^(n-1) - 1 et -(2^n)

Posté par
DLLKEVIN
re : Algorithme pour complément à deux 07-06-16 à 16:48

L'analyse ne pose pas de problème le soucis c'est l'aglorithme ajouter 1, ne garder que les n bits de droite si n<0

Posté par
bbomaths
re : Algorithme pour complément à deux 07-06-16 à 16:56

lire R2 : sur n bits, on ne peut coder que des nombres décimaux compris entre 2^(n-1) - 1 et -(2^(n-1))

ainsi sur 8 bits :



 127d : 01111111b
 126d : 01111110b
...
   2d : 00000010b
   1d : 00000001b
   0d : 00000000b
  -1d : 11111111b
  -2d : 11111110b
  -3d : 11111101b
...
-126d : 10000010b
-127d : 10000001b
-128d : 10000000b

Posté par
DLLKEVIN
re : Algorithme pour complément à deux 07-06-16 à 17:01

Finalement on ne se comprend pas.

Posté par
bbomaths
re : Algorithme pour complément à deux 07-06-16 à 17:08

si on veut convertir -13d :


   13d : 00001101

         11110010

         11110010
       + 00000001
        ---------
         11110011

Posté par
bbomaths
re : Algorithme pour complément à deux 07-06-16 à 17:12

au fait

0b + 0b = 0b
0b + 1b = 1b
1b + 0b = 1b
1b +1b = 10b

Posté par
mathafou Moderateur
re : Algorithme pour complément à deux 07-06-16 à 17:20

Bonjour,

on a appris à poser une addition à l'école primaire en base 10, c'est valable en n'importe quelle base et c'est toujours valable ici en base 2.
l'addition posée en binaire se fait de la même façon qu'en décimal, sauf que la base est 2 au lieu de 10, et pareil en n'importe quelle base b :
de la droite vers la gauche ajouter chiffre à chiffre et gérer les retenues si > b
tous les bits, pas seulement les 4 bits du nombre 13 en binaire "mathématique"
mais les 8 bits, ou 16 ou 64 etc de la longueur définie à priori du "mot".

la notion de "complément à deux" n'a aucun sens si la longueur du mot n'est pas fixée à priori et connue :
complément à deux "sur 8 bits" ou "sur 16 bits" etc ...
complément à deux tout court ne veut rien dire.

Posté par
DLLKEVIN
re : Algorithme pour complément à deux 07-06-16 à 17:33

Ce sujet doit être fermé parceque ...Merci

Posté par
mathafou Moderateur
re : Algorithme pour complément à deux 07-06-16 à 17:40

content que ça ait pu t'aider et à ta disposition si tu as d'autres questions .

pour info, les sujets ici ne se "ferment" pas.
il suffit de ne plus intervenir dessus.

Répondre à ce sujet

Seuls les membres peuvent poster sur le forum !

Vous devez être connecté pour poster :

Connexion / Inscription Poster un nouveau sujet
Une question ?
Besoin d'aide ?
(Gratuit)
Un modérateur est susceptible de supprimer toute contribution qui ne serait pas en relation avec le thème de discussion abordé, la ligne éditoriale du site, ou qui serait contraire à la loi.


Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !