Extension de signe
Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
-
Sasukedu77
- Membre Naturel
- Messages: 53
- Enregistré le: 15 Jan 2011, 00:12
-
par Sasukedu77 » 25 Oct 2012, 14:09
Bonjour,
En architecture des ordinateurs, je voulais savoir une méthode pour savoir si on doit rajouter des "1" ou des "0" pour effectuer donc l'extension de signe. Pourriez vous aussi me donner un exemple avec votre explication svp ?
Merci :)
-
homeya
- Membre Relatif
- Messages: 218
- Enregistré le: 05 Mar 2012, 11:20
-
par homeya » 25 Oct 2012, 20:48
Bonsoir,
L'extension de signe se pratique pour les nombres binaires suivant la notation en complément à deux. Elle consiste à recopier le bit de poids fort (le plus à gauche) sur autant de bits que nécessaire.
Par exemple: -5 = 11111011 sur 8 bits = 1111111111111011 sur 16 bits
3 = 00000011 sur 8 bits = 0000000000000011 sur 16 bits
Est-ce suffisamment clair ?
Cordialement.
-
Sasukedu77
- Membre Naturel
- Messages: 53
- Enregistré le: 15 Jan 2011, 00:12
-
par Sasukedu77 » 28 Oct 2012, 16:06
homeya a écrit:Bonsoir,
L'extension de signe se pratique pour les nombres binaires suivant la notation en complément à deux. Elle consiste à recopier le bit de poids fort (le plus à gauche) sur autant de bits que nécessaire.
Par exemple: -5 = 11111011 sur 8 bits = 1111111111111011 sur 16 bits
3 = 00000011 sur 8 bits = 0000000000000011 sur 16 bits
Est-ce suffisamment clair ?
Cordialement.
Merci d'avoir répondu.
Pour ton exempe, j'ai compris mais par exemple pour celui-ci :
Donnez leur représentation décimale s'ils sont codés sur 16 bits signés de 11111111 et 10110110
Comment sait-on que pour les 2 exemples ci-dessus, le bit de poids fort est de 0 ? Pourquoi pas de 1 ?
-
homeya
- Membre Relatif
- Messages: 218
- Enregistré le: 05 Mar 2012, 11:20
-
par homeya » 28 Oct 2012, 19:49
Le bit de poids fort est celui le plus à gauche. Si il vaut 1, c'est que le nombre est négatif. Donc, pour 11111111 et 10110110, on a affaire à deux nombres négatifs. Pour les convertir en décimal, il faut d'abord les transformer en leur opposé (je suppose qu'ils sont codés en notation en complément à 2, ce qui est plus que probable), c'est-à-dire inverser tous leurs bits et leur ajouter 1.
Ainsi, 11111111 devient 00000001 qui vaut 1 en décimal. Et 10110110 devient 01001010 soit 74 (si je ne me suis pas trompé). 11111111 et 10110110 valent donc respectivement -1 et -74.
-
Sasukedu77
- Membre Naturel
- Messages: 53
- Enregistré le: 15 Jan 2011, 00:12
-
par Sasukedu77 » 28 Oct 2012, 20:28
homeya a écrit:Le bit de poids fort est celui le plus à gauche. Si il vaut 1, c'est que le nombre est négatif. Donc, pour 11111111 et 10110110, on a affaire à deux nombres négatifs. Pour les convertir en décimal, il faut d'abord les transformer en leur opposé (je suppose qu'ils sont codés en notation en complément à 2, ce qui est plus que probable), c'est-à-dire inverser tous leurs bits et leur ajouter 1.
Ainsi, 11111111 devient 00000001 qui vaut 1 en décimal. Et 10110110 devient 01001010 soit 74 (si je ne me suis pas trompé). 11111111 et 10110110 valent donc respectivement -1 et -74.
Merci d'avoir répondu
Cependant je sais comment les convertir mais ici ils sont codés sur 8 bits. On les veut sur 16 bits. Ce que je voudrais savoir, c'est si il faut rajouter des 0 ou des 1 pour justement les coder en 16 bits. Et après les avoir mis en 16 bits, les convertir en décimale (et dans ce cas là, ce n'est pas -1 et -74).
-
homeya
- Membre Relatif
- Messages: 218
- Enregistré le: 05 Mar 2012, 11:20
-
par homeya » 28 Oct 2012, 20:40
Pour les coder sur 16 bits, il suffit détendre leur bit de poids fort (donc le plus à gauche) sur les 8 bits supplémentaires. Dans les deux cas, c'est un 1 que l'on va étendre.
Ainsi: 11111111 devient 1111111111111111 et 10110110 devient 1111111110110110.
Même codés sur 16 bits, ces deux nombres valent toujours -1 et -74, ce qui est heureux !
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 57 invités