Académique Documents
Professionnel Documents
Culture Documents
diaomar35@gmail.com 1
- Les nombres signes
Dans certaines opérations, il est nécessaire de pouvoir utiliser des nombres négatifs.
Comme les processeurs ne comprennent pas le signe « - », et comme il fallait limiter la taille
des mots à 8 bits, la seule méthode trouvée a été d’introduire le signe dans le nombre. On a
donc choisit le bit 7 pour représenter le signe.
Dans les nombres signés, un bit 7 à ‘1’ signifie nombre négatif. Si on s’était contenté de
cela, on aurait perdu une valeur possible. En effet, B’10000000’ (-0) serait alors égal à
B’00000000’ (0). De plus, pour des raisons de facilité de calcul, il a été décidé d’utiliser une
notation légèrement différente. Pour rendre un nombre négatif, il faut procéder en 2 étapes :
On inverse la totalité des bits du nombre, on ajoute 1. On obtient alors ce qu’on appelle le
COMPLEMENT A DEUX du nombre.
Dans le cas des nombres signés, on obtient donc les nouvelles limites suivantes :
- La plus grande valeur est B’01111111’, soit +127
- La plus petite valeur devient B’10000000’, soit –128.
Vous êtes en train de vous poser la question suivante : Quand je vois B’11111101’, est-
ce que c’est –3 ou est-ce que c’est 253 ? Et bien vous ne pouvez pas le savoir sans connaître
le contexte. Sachez que les nombres signifient uniquement ce que le concepteur du
programme a décidé qu’ils représentent.
- Les opérations booléennes.
Ce sont des opérations qui s’effectuent bit par bit sur un octet donné. Nous présentons
les opérations indispensables à connaître dans la programmation des PIC et autres
microcontrôleurs.
Le complément : « inversion » ou « NOT » ou encore complément à 1. Il est souvent
noté « ! » Son fonctionnement tout simple consiste à inverser tous les bits de l’octet (0
devient 1 et 1 devient 0).
Exemple : NOT B’10001111’ donne B’01110000’.
Pour les opérations booléennes, il est plus facile de travailler en binaire. Traduisez
l’exemple ci-dessus successivement en hexadécimal (on dira maintenant « hexa »), puis en
décimal, et essayez de complémenter directement. Bonjour les neurones.
Cette opération sert par exemple à lire une valeur dont les niveaux actifs ont été
inversés, à réaliser des nombres négatifs …etc.
La fonction « ET » :« AND » et souvent notée « & »
Elle consiste à appliquer un mot sur un autre mot et à multiplier chaque bit par le bit de
même rang. Pour faire une opération « ET », il faut donc toujours 2 mots.
Exemple : B’11001100’ AND B ‘11110000’ donne B’11000000’
Cette instruction est utilisée pour MASQUER des bits qui ne nous intéressent pas.
Prenez l’exemple ci-dessus : Le 2ème octet contient 4 bits à 1 et 4 bits à 0. Regardez le résultat
obtenu : Les 4 premiers bits de l’octet 1 sont conservés (1100), à l’emplacement des 4 autres
nous trouvons des 0.
On peut donc à l’aide de cette instruction positionner un ou plusieurs bits dans un mot à
0 sans connaître son contenu précédent.
La fonction « OU » : Encore appelée OR, souvent notée « | » elle permet, de
positionner un bit à 1 si le Bit1 OU le Bit2 est à 1.
Exemple : B’10001000’ OR B’11000000’ donne B’11001000’
diaomar35@gmail.com 2
Cette instruction permet de forcer n’importe quel bit d’un mot à 1 sans connaître son
contenu précédent.
Vous voyez que dans l’exemple précédent, les 2 premiers bits ont été forcés au niveau
1, indépendamment de leur niveau précédent.
La fonction « OU EXCLUSIF » : Appelé « Exclusif OR ». Elle est souvent
appelée XOR (eXlusif OR). Elle se comporte comme la fonction OR, à un détail près.
Pour obtenir 1, il faut que le Bit1 soit à 1 OU que le Bit2 soit à 1 à l’EXCLUSION des deux
bits ensemble. Si les 2 bits sont à 1, alors le résultat sera 0.
Exemple : B’10001000 ‘ XOR B’11000000’ donne B’01001000 ‘
Cette instruction sert à inverser un ou plusieurs bits dans un mot sans toucher aux
autres. Dans l’exemple précédent, vous voyez qu’à l’emplacement des 2 bits à 1 du 2ème octet,
les bits correspondants du 1er octet ont été inversés.
LES UNITES
Nous avons parlé d’octets et de bits. En informatique, on utilise couramment les
termes de Byte (octet) et bit (binary unit).
Les symboles courants utilisés sont : Octet : « B » (pour byte) ou « O » (pour octet), ou
encore « o » Bit : « b ». Les anglais sont obligés d’utiliser le « B » Majuscule pour l’octet,
pour éviter qu’on ne confonde avec bit.
En effet, en base 10, notre base « de tous les jours », on a décidé d’adopter
des multiples de 3 de la puissance 10. Ainsi par exemple,
9 12
Kilo = 103, Méga = 106, Giga = 10 , Téra = 10
Mais en travaillant en base 2, ces valeurs ne « tombent pas juste. Il fallait donc
pouvoir représenter des « multiples » qui soient particuliers. On a donc procédé dans un
premier temps à la récupération pure et simple des termes utilisés en base 10 (Kilo, Méga
etc.).
Ainsi, on a défini : kilo = 210, Méga = 220, Giga = 230, Téra = 240
Un kilooctet en informatique valait 210 octets, et donc 1024 octets, alors qu’un
kilogramme valait, lui, 1000 grammes.
Les vendeurs de matériel de stockage de masse ont sauté sur l’occasion. Ainsi, eux
ont conservé l’appellation originale (légale) en puissance de 10, alors que tous les
informaticiens raisonnaient en puissance de 2. Ainsi, lorsqu’on achetait un disque dur de
100Mo (100, il faisait bel et bien 100.000.000 octets. (100.000.0000 / 220 =
95,4Megaoctets). Bref, 100 Megaoctets de constructeur de disque dur = 95,4 Megaoctets
d’informaticien.
Début des années 2000, on décide donc de réglementer tout ça. Il était clair dès lors
qu’on serait contraint d’inventer de nouveaux termes, On en arriva donc aux conventions
suivantes :
Kibi (Ki) : 210= 1024 = 1,024 k
Mébi (Mi) : 220 = 1048576 = 1,048586 M
Gibi (Gi) : 230 = 1073741824 = 1,073741824 G
Tébi (Ti) : 240 = 1099511627776 = 1,099511627776 T
diaomar35@gmail.com 3