Problème sur les nombres binaires signés
Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
-
Sasukedu77
- Membre Naturel
- Messages: 53
- Enregistré le: 14 Jan 2011, 23:12
-
par Sasukedu77 » 31 Oct 2012, 13:25
Bonjour,
Je n'arrive pas à comprendre le corrigé d'un exercice :
Soit le nombre binaire 10111010012, que lon considère non signé dans un premier temps :
1) Donnez sa représentation décimale.
Donc ça fait 745 (j'ai compris)
On le considère maintenant signé sur 10 bits.
2) Donnez sa représentation décimale.
10 1110 10012 = -279 (je ne sais pas comment il a fait pour trouver ça...)
Pourtant j'ai appliqué la méthode : vu que c'est un nombre négatif (avec le 1 en bit de signe), j'ai converti en le nombre binaire en complément à 2 et je l'ai converti en décimale mais je ne trouve pas ça...
3)Donnez sa représentation binaire sur 15 bits signés.
Réponse : 111 1110 1110 1001 (Comment sait on si on doit mettre un "1" ou des "0" pour arriver jusqu'a 15 bits ?)
Merci pour votre aide !
-
homeya
- Membre Relatif
- Messages: 218
- Enregistré le: 05 Mar 2012, 10:20
-
par homeya » 31 Oct 2012, 13:43
Bonjour,
Les calculs sur les nombres binaires semblent être à la mode ces temps-ci !
Pour la question 2, 10 1110 10012 sécrit en complément à deux: 01 0001 01112 soit en décimal 256 + 16 + 4 +2 +1 = 279.
Pour la question 3, de manière générale, il faut étendre le bit de poids fort (celui le plus à gauche) sur le nombre de bits demandés. Ainsi 10 1110 10012 = 111 1110 1110 10012. Avec cette méthode, un nombre négatif reste négatif et un positif positif et c'est bien ainsi !
Cordialement.
-
Sasukedu77
- Membre Naturel
- Messages: 53
- Enregistré le: 14 Jan 2011, 23:12
-
par Sasukedu77 » 31 Oct 2012, 13:55
homeya a écrit:Bonjour,
Les calculs sur les nombres binaires semblent être à la mode ces temps-ci !
Pour la question 2, 10 1110 10012 sécrit en complément à deux: 01 0001 01112 soit en décimal 256 + 16 + 4 +2 +1 = 279.
Pour la question 3, de manière générale, il faut étendre le bit de poids fort (celui le plus à gauche) sur le nombre de bits demandés. Ainsi 10 1110 10012 = 111 1110 1110 10012. Avec cette méthode, un nombre négatif reste négatif et un positif positif et c'est bien ainsi !
Cordialement.
Ok c'est bon j'ai compris. Pour la première question j'avais fait une erreur de calcul...
Sinon est ce que tu pourrais m'expliquer ceci :
Soit le nombre en représentation décimale suivant : 224.
Combien faut-il de bits au minimum pour le représenter en binaire non signé ?
On sait que la valeur max codés sur n bits est de 2^n -1. Mais après je ne sais pas ...
Merci
-
maths0
- Membre Irrationnel
- Messages: 1251
- Enregistré le: 12 Nov 2011, 13:37
-
par maths0 » 31 Oct 2012, 15:51
Sasukedu77 a écrit:Ok c'est bon j'ai compris. Pour la première question j'avais fait une erreur de calcul...
Sinon est ce que tu pourrais m'expliquer ceci :
Soit le nombre en représentation décimale suivant : 224.
Combien faut-il de bits au minimum pour le représenter en binaire non signé ?
On sait que la valeur max codés sur n bits est de 2^n -1. Mais après je ne sais pas ...
Merci
1024 512
256 128 64 32 16 8 4 2 1
--1023 511
255 127 63 31 15 8 3 1 //Je peux aller jusqu'à 255 avec 8 bits.
-------------1---1---1--1-1-1-1-1
Donc il me faut 1 octet pour coder 224 en binaire (1110 0000).
-
Sasukedu77
- Membre Naturel
- Messages: 53
- Enregistré le: 14 Jan 2011, 23:12
-
par Sasukedu77 » 01 Nov 2012, 11:20
Merci de ta réponse. Cependant cet exemple est assez simple mais admettons qu'on a 2^24 au lieu de 224 ? Comment fais tu ?
-
homeya
- Membre Relatif
- Messages: 218
- Enregistré le: 05 Mar 2012, 10:20
-
par homeya » 01 Nov 2012, 12:23
Pour coder 2^24 en binaire il faut ... 25 bits (facile !). En pratique pour coder le nombre x (décimal), il faut: E(ln(base2)(x))+1 = E(ln(x)/ln(2))+1 bits.
Ainsi pour x = 224, on obtient 8 bits, pour 2^24 25 bits, etc.
-
Sasukedu77
- Membre Naturel
- Messages: 53
- Enregistré le: 14 Jan 2011, 23:12
-
par Sasukedu77 » 01 Nov 2012, 13:03
Question peut être bête mais c'est quoi "E" ?
-
homeya
- Membre Relatif
- Messages: 218
- Enregistré le: 05 Mar 2012, 10:20
-
par homeya » 01 Nov 2012, 13:08
C'est vrai que je ne l'ai pas précisé: c'est la fonction partie entière.
-
Sasukedu77
- Membre Naturel
- Messages: 53
- Enregistré le: 14 Jan 2011, 23:12
-
par Sasukedu77 » 01 Nov 2012, 13:29
Et cette formule E(ln(x)/ln(2))+1 bits, c'est valable tout le temps ?
Même en binaire signé ?
-
homeya
- Membre Relatif
- Messages: 218
- Enregistré le: 05 Mar 2012, 10:20
-
par homeya » 01 Nov 2012, 13:35
La formule n'est valable que pour les nombres non signés. Pour les nombres binaires signés, on a besoin d'un bit supplémentaire (qui servira à indiquer le signe).
-
Sasukedu77
- Membre Naturel
- Messages: 53
- Enregistré le: 14 Jan 2011, 23:12
-
par Sasukedu77 » 01 Nov 2012, 15:05
Ok pas de problème mais par contre avec cet exemple : -2^24 il faut donc au minimum 25 bits pour représenter -224 en binaire signé mais pourquoi ?
-
homeya
- Membre Relatif
- Messages: 218
- Enregistré le: 05 Mar 2012, 10:20
-
par homeya » 01 Nov 2012, 17:12
Il faut 25 bits pour représenter 2^ 24 et 26 bits pour -2^24 car il faut rajouter le bit de signe. Par analogie, il faut 5 caractères pour écrire 64738 et 6 caractères pour -64738 puisqu'il faut rajouter le signe -. Pour représenter 224, il fallait 8 bits et donc pour -224, il en faudra 9. Est-ce plus clair ?
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 32 invités