Cela donne 11001002 = 10010. Le travail s’effectue de la même manière en base 3 : 10201 3 = 10010.
On obtient de façon identique les résultats suivants : 100 10 = 12104 = 4005 = 2446 = 2027 = 1448 = 1219
= 6416.
On peut obtenir certains résultats directement à partir d’autres. Ainsi, en regroupant les bits deux à
deux, 01 10 01 00, on obtient le résultat en base 4 ; en les regroupant trois à trois, on obtient la base
8, et quatre à quatre (en n’oubliant pas le zéro en tête), on obtient l’hexadécimal. De même, on
= 1966.937510
c. 457703.178 = 100101111111000011.0011112= 25FC3.3C16
d. 80659 = 8x93 + 0 + 6x9 + 5 = 8x729 + 54 + 5 = 5832 + 59 = 5891 10
5891/16 = 368 + 3
368/16 = 23 + 0
23/16 = 1 + 7
589110 = 170316
EXO4
0,825410= 0.11010011….2 214,4510=( 11010110.0111001….)2
(88)10 = (1011000)2 =(10021)3
EXO5
a- 954110 = ( 1001010101000001)DCB 84952910= ( 100001001001010100101001)DCB
b- 100110000100DCB=( 984)10 111100100010110DCB=( 7916)10 110110010001DCB=( ?)10 ce
nombre n’existe pas en DCB
c- 100110000100DCB=( 984)10=(1111011000)2=( 1730)8=3D816 111100100010110DCB=( 7916)10
=(1111011101100)2=(17354)8 =(1EEC)16
EXO6
Attention
Il ne faut pas confondre la représentation en complément à 2 et l’opération qui consiste à prendre le
complément à 2, c’est-à-dire à inverser tous les bits du nombre et à ajouter 1. La représentation en
complément à 2 consiste à écrire les nombres négatifs (et uniquement ceux-là) en prenant le
complément à 2 de leur valeur absolue ; quelle que soit la représentation, les nombres positifs sont
toujours écrits de la même façon.
EXO7
1) 122 – 43 = 122 + (–43). Il faut donc calculer le complément à 2 de 43. La première question à
se poser est de savoir de combien de bits on a besoin pour exprimer –43 et 122. 7 bits
D
permettent bien d’écrire les nombres de 0 à 127 mais, en complément à 2, c’est l’intervalle
de –64 à 63 qui est représenté sur 7 bits. Il en faut donc au moins 8.
U
AO
Il y a débordement dans le premier et le dernier cas. On pourrait croire que le résultat de 100 + 100,
c’est-à-dire 110010002, est correct car il se lit bien 27 + 26 + 23= 200. Mais il ne faut pas oublier qu’on
est en représentation en complément à 2 et qu’on ne peut donc pas choisir de le lire de cette façon-
là. Il faut lire le résultat comme un nombre négatif.
2) Il ne peut pas y avoir de débordement lorsque l’on additionne deux nombres de signes
contraires car la valeur absolue du résultat est toujours inférieure aux valeurs absolues
des deux opérandes ; elle est donc toujours représentable.
Si A et B sont positifs, a7 et b7 valent 0. r vaut donc toujours 0 et s7 peut valoir 0 (le résultat est donc
positif, c’est correct) ou 1 (le résultat est négatif, il y a débordement). Si A et B sont négatifs, a 7 et b7
valent 1. r vaut donc toujours 1 et s7 peut valoir 1 (le résultat est donc négatif, c’est correct) ou 0 (le
résultat est positif, il y a débordement). On a donc débordement si les deux opérandes sont de
mêmes signes et si s7 et r sont complémentaires.
Si les deux opérandes sont de signes contraires, l’un des deux bits de poids fort vaut 1 et l’autre 0. r 6
et r sont alors égaux et il n’y a jamais débordement. Si les deux opérandes sont positifs, le bit de
poids fort des deux opérandes vaut 0 (donc r vaut 0) et le signe du résultat est identique à r 6.
Autrement dit, il y a débordement quand r6 vaut 1 et r vaut 0. Si les deux opérandes sont négatifs, le
bit de poids fort vaut 1 (donc r vaut 1) et le signe du résultat a la même valeur que r 6 . Il y a donc
débordement quand r vaut 1 et r6 vaut 0 (donnant un résultat, incorrect, positif). Au final, on a bien
débordement quand r et r6 sont complémentaires.
.
EXO9
500= 1,953125× 28= (1+ 2-1 + 2-2 + 2-3 + 2-4 + 2-6 )× 28
D
U
Cela donne 0 10000111 11110100000000000000000. On a un bit de signe égal à 0, un exposant égal
à 8 + 127 et les premiers bits de la pseudo-mantisse qui exprime 0,953125.
AO
EXO10.
Compléter les tables :
EXO11.
Effectuer les opérations suivantes
A b a+b a—b a*b
(11011)2 (1101)2 (101000)2 (1110)2 (101011111)2
(45)8 (32)8 (77)8 (13)8 (1702)8
(A2A)16 (ABC)16 (998)16 (5CBF4)16
(92)16
EXO12
EXO13 Une solution est de construire la séquence de code de Gray pour obtenir la réponse
est d'utiliser un algorithme de conversion Gray à binaire naturel). Voici la réponse finale :
a) 28 b) 2 c) 14 d) 1 e) 21 f) 3
EXO14
Pour la parité paire il faut que le nombre de « 1 » de tous les bits y compris le bit de parité
soit un nombre pair
D
Pour la parité impaire il faut que le nombre de « 1 » de tous les bits y compris le bit de parité
soit un nombre impair
U
a) 1 b) 0 c) 0 d) 1 e) 1 f) 0 g) 1 h) 0 i) 0 j) 1
AO
EXO15
a- for (i= 0 ; i < L ; i++) ac[i]= ad[L – 1 –i] ;
ou encore, sans aucun risque, avec une variable k qui suit le mouvement de i :
k = L-1 ;
D
cumul=0 ; puissance = 1 ;
for(i = 0 ; i < L ; i++) { cumul += a[i] * puissance ; puissance = 2*puissance ;}
printf(« %d », cumul) ;
a[0] final dans une variable cumul, puis on double et on ajoute a[1] pour avoir le nouveau cumul,
puis on double et on ajoute a[2], et ainsi de suite.
Mettre le nombre de longueur L donnée dans la tableau a[L]
cumul= a[0] ;
for(i=1 ; i < L ; i++) cumul = 2*cumul + a[i] ;
D
printf(« %d », cumul) ;
}
q = q/2;
i++;
D
U
longueur=i;
printf("Ecriture suivant les puissances croissantes :\n");
for(j=0; j<longueur; j++) printf("%d ",r[j]);
AO