• Aucun résultat trouvé

ISN - Codage binaire des nombres

N/A
N/A
Protected

Academic year: 2022

Partager "ISN - Codage binaire des nombres"

Copied!
102
0
0

Texte intégral

(1)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

ISN - Codage binaire des nombres

M. Lagrave

Lycée Beaussier

2012–2013

Merci au site Arcana Percipio

(2)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Sommaire

Numération

Codage de N Codage de Z Codage de R

(3)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Numération

L’ordinateur est une créature imberbe, végétarienne, mais surtout complètement manchote. Pas de main, donc pas de doigt, et donc aucune raison de compter en base 10.

Très intimement lié à l’activité humaine, l’ordinateur a pourtant intérêt à disposer de quelques solides méthodes afin de se représenter les nombres dans leur infinie variété :

entiers ou décimaux, signés ou non signés, éléments de N,Z,D,Q,R. . . Et uniquement à l’aide de "1" et de "0".

(4)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Numération

L’ordinateur est une créature imberbe, végétarienne, mais surtout complètement manchote. Pas de main, donc pas de doigt, et donc aucune raison de compter en base 10.

Très intimement lié à l’activité humaine, l’ordinateur a pourtant intérêt à disposer de quelques solides méthodes afin de se représenter les nombres dans leur infinie variété :

entiers ou décimaux, signés ou non signés, éléments de N,Z,D,Q,R. . . Et uniquement à l’aide de "1" et de "0".

(5)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Numération

Les nombres étant par nature assez . . . nombreux, il s’avère délicat d’associer un mot ou un symbole unique à chacun d’entre eux. D’où, très vite, la nécessité de se frotter à l’épineux problème de la numération, c’est-à-dire à l’art et la manière de représenter les

nombres de façon à pouvoir les identifier, les reconnaître, et, ainsi, les garder en mémoire.

(6)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Sommaire

Numération Codage de N

Conversion Codage de Z Codage de R

(7)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Numération

2 système de numérationdécimale positionnelle : 5 022 = 5×1 000 + 0×100 + 2×10 + 2×1

5 022 = 5×103+ 0×102+ 2×101+ 2×100

on dit que 10 constitue la base de notre système. Il s’explique simplement par le nombre de symboles graphiques, ou chiffres, dont nous disposons pour représenter nos nombres : 0,1,2,3,4,5,6,7,8 et 9.

(8)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Numération

2 système de numérationdécimale positionnelle : 5 022 = 5×1 000 + 0×100 + 2×10 + 2×1

5 022 = 5×103+ 0×102+ 2×101+ 2×100

on dit que 10 constitue la base de notre système. Il s’explique simplement par le nombre de symboles graphiques, ou chiffres, dont nous disposons pour représenter nos nombres : 0,1,2,3,4,5,6,7,8 et 9.

(9)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Numération

2 système de numérationbinaire positionnelle : on utilise pour représenter les nombres, non plus dix

symboles différents, mais seulement deux : le "0" et le "1".

10011 = 1×24+ 0×23+ 0×22+ 1×21+ 1×20 10011 = 1×16 + 0×8 + 0×4 + 1×2 + 1×1

. . . c’est-à-dire 19.

(10)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Numération

2 système de numérationbinaire positionnelle : on utilise pour représenter les nombres, non plus dix

symboles différents, mais seulement deux : le "0" et le "1".

10011 = 1×24+ 0×23+ 0×22+ 1×21+ 1×20 10011 = 1×16 + 0×8 + 0×4 + 1×2 + 1×1 . . . c’est-à-dire 19.

(11)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Attention

Quand on anobjets, on les groupe par paquets de deux, qu’on regroupe eux-mêmes en paquets de deux paquets, etc. Autrement dit, on fait unesuccession de divisions par 2, jusqu’à obtenir un quotient égal à 0.

il faut nous rappeler à ce stade la petite caractéristique de l’ordinateur : sa propension à

manipuler desoctets, et non des bits isolés. Ceci explique que le nombre 10011, notre exemple, sera en fait codé ainsi : 00010011, avec trois zéros initiaux, non significatifs pour les calculs, mais néanmoins indispensables de par le mode de fonctionnement interne du processeur.

(12)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Conversion entre bases décimale et binaire

Cliquez sur les bits du nombre binaire ou sur les chiffres du nombre décimal afin d’en obtenir la conversion dans l’autre base de numération.

(13)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Conversion entre bases décimale et binaire

La conversion de la base 2 vers la base 10 ne pose aucune difficulté, dès lors que l’on replace les puissances de deux tacites entre les différents coefficients constituant le nombre binaire.

Il existe plusieurs méthodes pour procéder à la conversion de la base 10 vers la base 2. Celle exposée ci-dessus, élémentaire, consiste simplement à diviser le nombre décimal à convertir par deux puis recommencer l’opération sur le résultat entier obtenu jusqu’à ce que le résultat soit nul, en conservant à chaque itération le reste de l’opération (0 si le résultat est pair, 1 s’il est impair). Les différents restes obtenus, juxtaposés de droite à gauche, constituent le nombre binaire recherché.

Et comme vous avez parfaitement compris le principe du codage binaire des entiers, vous ne serez pas surpris(e) de constater l’impossibilité de convertir en binaire sur un octet un entier décimal supérieur à 255. . .

(14)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Multiplication de deux nombres binaires

les entiers binaires se comportent comme des nombres tout à fait "normaux", et se prêtent donc aux mêmes opérations classiques que notre arithmétique en base 10.

Cliquez sur les bits constituant le multiplicande et le multiplicateur pour voir le résultat de la multiplication correspondante.

Nous voyons bien que la multiplication et l’addition binaires n’ont rien de bien révolutionnaires puisqu’ici comme ailleurs, tout est question de retenues.

(15)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Multiplication de deux nombres binaires

. . . Avec une petite différence néanmoins. Une énorme différence, en fait . . . Due à la manie très particulière qu’a la machine de toujours faire tenir ses entiers dans un nombre fixe d’octet(s). Il se peut, en effet, qu’au cours d’un calcul, le résultat produit donne un résultat trop grand pour pouvoir "tenir" dans le nombre d’octets alloués au codage. Que se passe-t-il alors ?

Et bien le processeur déclenche dans ce cas une alerte interne appelée overflowou, s’il est d’origine

francophone, dépassement de capacité, qui provoque l’arrêt du calcul en cours, calcul de toute façon erroné. Comme vous vous en doutez, si rien n’est prévu dans le programme afin de gérer cette situation embarrassante, les conséquences peuvent s’avérer fâcheuses et prendre toutes les apparences d’un bon bug des familles.

(16)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Multiplication de deux nombres binaires

. . . Avec une petite différence néanmoins. Une énorme différence, en fait . . . Due à la manie très particulière qu’a la machine de toujours faire tenir ses entiers dans un nombre fixe d’octet(s). Il se peut, en effet, qu’au cours d’un calcul, le résultat produit donne un résultat trop grand pour pouvoir "tenir" dans le nombre d’octets alloués au codage. Que se passe-t-il alors ?

Et bien le processeur déclenche dans ce cas une alerte interne appelée overflowou, s’il est d’origine

francophone, dépassement de capacité, qui provoque l’arrêt du calcul en cours, calcul de toute façon erroné.

Comme vous vous en doutez, si rien n’est prévu dans le programme afin de gérer cette situation embarrassante, les conséquences peuvent s’avérer fâcheuses et prendre toutes les apparences d’un bon bug des familles.

(17)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Dépassement de capacité

En pratique, combien d’octet(s) un processeur alloue-t-il réellement au codage des entiers ?

C’est à la discrétion du programmeur d’allouer un nombre donné d’octets au codage des entiers gérés par son

application. Il existe toutefois des types génériques d’entiers définis dans les langages de programmation, à l’image par exemple des typesintetlongdans le langage C, allouant respectivement deux et quatre octets pour le codage des entiers.

Bien évidemment, il serait tentant de toujours préférer un nombre maximal d’octets afin de minimiser tout risque de débordement, mais cette solution se révèlerait très

gourmande en mémoire, tous les entiers, même les plus petits, occupant alors ce nombre maximal d’octets pour leur stockage. C’est une petite partie de l’art du

programmeur de trouver le juste compromis entre sécurité et économie des ressources mémoire.

(18)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Sommaire

Numération Codage de N Codage de Z

complément logique complément à 2

Caractéristiques

bits en biais décodage Codage de R

(19)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

entiers relatifs

Comment représenter à l’aide de bits les entiers positifs ET négatifs, sachant qu’en bonne machine totalement binaire, un processeur ne pige ni le signe plus, ni le signe moins ?

Sachant qu’un signe en mathématique ne peut prendre que deux valeurs différentes, un réflexe quasi bestial pourrait nous incliner à dédier le bit de plus haut poids de la séquence à l’indication du signe : par exemple "0"

pour les entiers positifs et "1" pour les entiers négatifs.

Cette approche, fort simple et parfaitement valable, est appelée représentation signe-valeur absolue, mais comporte deux très légers inconvénients de taille :

(20)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

entiers relatifs

Comment représenter à l’aide de bits les entiers positifs ET négatifs, sachant qu’en bonne machine totalement binaire, un processeur ne pige ni le signe plus, ni le signe moins ?

Sachant qu’un signe en mathématique ne peut prendre que deux valeurs différentes, un réflexe quasi bestial pourrait nous incliner à dédier le bit de plus haut poids de la séquence à l’indication du signe : par exemple "0"

pour les entiers positifs et "1" pour les entiers négatifs.

Cette approche, fort simple et parfaitement valable, est appelée représentation signe-valeur absolue, mais comporte deux très légers inconvénients de taille :

(21)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

entiers relatifs

I Lors des calculs, ce bit de signe ne peut être considéré tel quel par la machine mais doit faire l’objet d’un traitement particulier sous peine de conduire à des résultats plutôt surprenants, (610+−610=−1210)

I Le nombre 0 se trouve représenté par deux valeurs distinctes : +0 (00000000) et -0 (10000000).

Non, franchement, si on pouvait trouver un autre moyen . . .

(22)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

entiers relatifs

I Lors des calculs, ce bit de signe ne peut être considéré tel quel par la machine mais doit faire l’objet d’un traitement particulier sous peine de conduire à des résultats plutôt surprenants, (610+−610=−1210)

I Le nombre 0 se trouve représenté par deux valeurs distinctes : +0 (00000000) et -0 (10000000).

Non, franchement, si on pouvait trouver un autre moyen . . .

(23)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage des entiers relatifs par la représentation signe-valeur absolue

Cliquez sur les bits du nombre binaire afin d’obtenir la valeur de l’entier codé correspondant ou sur les chiffres et/ou signe du nombre décimal afin d’en obtenir le codage

(24)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage des entiers relatifs par la représentation signe-valeur absolue

Comme nous pouvons le constater, le bit de plus haut poids étant désormais chargé de coder le signe, il perd son rôle de coefficient associé à la valeur 27. Conséquence immédiate : le plus grand entier relatif "codable" devient 127 (01111111), et le plus petit -127 (11111111).

Attention ! Comprenez bien qu’il n’est plus possible ici de parler de conversion entre bases décimale et binaire, car la représentation par signe-valeur absolue ne constitue plus stricto sensu une numération positionnelle, de par la présence du bit de signe. Il s’agit plutôt dans ce cas d’un simple codage binaire, dans le sens où l’on transforme une information (ici, un entier) en une séquence de bits.

(25)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage des entiers relatifs par la représentation signe-valeur absolue

Comme nous pouvons le constater, le bit de plus haut poids étant désormais chargé de coder le signe, il perd son rôle de coefficient associé à la valeur 27. Conséquence immédiate : le plus grand entier relatif "codable" devient 127 (01111111), et le plus petit -127 (11111111).

Attention ! Comprenez bien qu’il n’est plus possible ici de parler de conversion entre bases décimale et binaire, car la représentation par signe-valeur absolue ne constitue plus stricto sensuune numération positionnelle, de par la présence du bit de signe. Il s’agit plutôt dans ce cas d’un simple codage binaire, dans le sens où l’on transforme une information (ici, un entier) en une séquence de bits.

(26)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Complément logique

Soit un nombre binaireN composé de p bits. En mathématique, on appellera complément à 1 deN le nombre notéN tel queN +N = 2p−1.

En langage compréhensible, ce complément N est donc le nombre qui, ajouté à N, donnera un résultat composé uniquement de 1. Par exemple, 1001012 est le complément à 1 de 0110102 puisque on a bien :

1001012+ 0110102= 1111112= 26−1

(27)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Complément logique

Soit un nombre binaireN composé de p bits. En mathématique, on appellera complément à 1 deN le nombre notéN tel queN +N = 2p−1.

En langage compréhensible, ce complément N est donc le nombre qui, ajouté à N, donnera un résultat composé uniquement de 1. Par exemple, 1001012 est le complément à 1 de 0110102 puisque on a bien :

1001012+ 0110102= 1111112= 26−1

(28)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Complément logique

Notons en passant que, de par la définition du complément à 1, on a :

N +N = 2p−1 . . . soit,−N =N + 1−2p

Rappelons-nous qu’un processeur a pour habitude de coder ses nombres sur un nombre fixe d’octet(s). Dès lors, p est égal à 8, 16 voire 32 et, conséquence immédiate, 2p est donc un nombre composé d’un "1" suivi de 8, 16, voire 32 "0" - c’est-à-dire un nombre trop grand pour tenir dans le nombre d’octet(s) qui lui est alloué.

(29)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Complément à 2

Ce "1" initial, puisque débordant sur la gauche, peut-être très facilement ignoré par la machine. Dès lors, le nombre 2p se voit réduit à une série de "0", c’est-à-dire 0.

Et on se retrouve alors avec l’égalité simplifiée :

−N =N + 1

Hé, hé. . . En mathématiques,−N est appelé l’opposé de N, et ce, en base 10 comme en base 2. Il semble donc bien que, l’air de rien, nous ayons trouvé là une manière très élégante de représenter en binaire les entiers négatifs, simplement en ajoutant un au complément à 1 de leur opposé positif.

Définition

En binaire, on appelle complément à 2 de N cette valeur N + 1.

(30)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Complément à 2

Ce "1" initial, puisque débordant sur la gauche, peut-être très facilement ignoré par la machine. Dès lors, le nombre 2p se voit réduit à une série de "0", c’est-à-dire 0.

Et on se retrouve alors avec l’égalité simplifiée :

−N =N + 1

Hé, hé. . . En mathématiques,−N est appelé l’opposé de N, et ce, en base 10 comme en base 2. Il semble donc bien que, l’air de rien, nous ayons trouvé là une manière très élégante de représenter en binaire les entiers négatifs, simplement en ajoutant un au complément à 1 de leur opposé positif.

Définition

En binaire, on appelle complément à 2 de N cette valeur N + 1.

(31)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Complément à 2

Ce "1" initial, puisque débordant sur la gauche, peut-être très facilement ignoré par la machine. Dès lors, le nombre 2p se voit réduit à une série de "0", c’est-à-dire 0.

Et on se retrouve alors avec l’égalité simplifiée :

−N =N + 1

Hé, hé. . . En mathématiques,−N est appelé l’opposé de N, et ce, en base 10 comme en base 2. Il semble donc bien que, l’air de rien, nous ayons trouvé là une manière très élégante de représenter en binaire les entiers négatifs, simplement en ajoutant un au complément à 1 de leur opposé positif.

Définition

En binaire, on appelle complément à 2 de N cette valeur N + 1.

(32)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage des entiers relatifs par la méthode du complément à 2.

Cliquez sur les chiffres du nombre décimal pour en obtenir la conversion en binaire "pur" (c’est-à-dire en numération binaire positionnelle classique), le complément à 1 et le complément à 2.

(33)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage des entiers relatifs par la méthode du complément à 2.

Pour obtenir rapidement le complément à 2 d’un nombre binaire, il suffit de recopier tels quels les bits à partir de la droite jusqu’au premier "1" inclus, puis d’inverser les bits suivants.

(34)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Caractéristiques du complément à 2

I Le bit de plus haut poids équivaut de fait à un bit de signe : "0" pour les entiers positifs, "1" pour les entiers négatifs.

I Attention ! Cette phrase implique simplement que si la séquence binaire débute par un "1", l’entier codé est un nombre négatif et que si la séquence débute par un "0", l’entier codé est un nombre positif. Ceci ne signifie absolument pas que le nombre positif et son opposé négatif ne diffèreront que par leur bit de signe.

I Une manière moins piégeuse et très pertinente de voir les choses est de considérer ce bit de tête comme associé à un "poids" de −2n−1 (avecn = 8, dans le cas d’un octet), les autres bits étant associés à leur puissance de deux habituelle en numération

positionnelle.

(35)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Caractéristiques du complément à 2

I Le bit de plus haut poids équivaut de fait à un bit de signe : "0" pour les entiers positifs, "1" pour les entiers négatifs.

I Attention ! Cette phrase implique simplement que si la séquence binaire débute par un "1", l’entier codé est un nombre négatif et que si la séquence débute par un "0", l’entier codé est un nombre positif. Ceci ne signifie absolument pas que le nombre positif et son opposé négatif ne diffèreront que par leur bit de signe.

I Une manière moins piégeuse et très pertinente de voir les choses est de considérer ce bit de tête comme associé à un "poids" de −2n−1 (avecn = 8, dans le cas d’un octet), les autres bits étant associés à leur puissance de deux habituelle en numération

positionnelle.

(36)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Caractéristiques du complément à 2

I Le bit de plus haut poids équivaut de fait à un bit de signe : "0" pour les entiers positifs, "1" pour les entiers négatifs.

I Attention ! Cette phrase implique simplement que si la séquence binaire débute par un "1", l’entier codé est un nombre négatif et que si la séquence débute par un "0", l’entier codé est un nombre positif. Ceci ne signifie absolument pas que le nombre positif et son opposé négatif ne diffèreront que par leur bit de signe.

I Une manière moins piégeuse et très pertinente de voir les choses est de considérer ce bit de tête comme associé à un "poids" de −2n−1 (avecn = 8, dans le cas d’un octet), les autres bits étant associés à leur puissance de deux habituelle en numération

positionnelle.

(37)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Caractéristiques du complément à 2

I Le complément à 2 d’un entier négatif donne bien l’opposé positif de cet entier, ce qui est plutôt rassurant.

I Le 0 est codé par une seule représentation binaire : 00000000 (dans le cas d’un codage sur un octet).

I Avec n bits, il devient possible de représenter 2n entiers compris entre −2n−1 et 2n−1−1.

(38)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Caractéristiques du complément à 2

I Le complément à 2 d’un entier négatif donne bien l’opposé positif de cet entier, ce qui est plutôt rassurant.

I Le 0 est codé par une seule représentation binaire : 00000000 (dans le cas d’un codage sur un octet).

I Avec n bits, il devient possible de représenter 2n entiers compris entre −2n−1 et 2n−1−1.

(39)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Caractéristiques du complément à 2

I Le complément à 2 d’un entier négatif donne bien l’opposé positif de cet entier, ce qui est plutôt rassurant.

I Le 0 est codé par une seule représentation binaire : 00000000 (dans le cas d’un codage sur un octet).

I Avec n bits, il devient possible de représenter 2n entiers compris entre −2n−1 et 2n−1−1.

(40)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Exemple

I Comment coderiez-vous l’entier −6010 sur un octet par la méthode du complément à 2 ?

11000100 Le nombre +6010 est codé par l’octet 00111100. Afin d’obtenir facilement le complément à 2 de ce nombre, et, donc, le codage binaire de son opposé, il suffit de recopier les bits de droite à gauche jusqu’au premier "1" inclus, puis de continuer en inversant cette fois les bits restants.

I Supposez désormais que vous deviez coder ce même nombre, par la même méthode, mais cette fois-ci sur deux octets. Quel couple d’octets obtiendrez-vous ? 11111111 11000100 Ce genre d’opération, très commune en arithmétique binaire, consistant à ranger un nombre binaire dans un plus grand nombre de bits que le nombre de bits qu’il occupait

originellement, se nommeextension de signe.

(41)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Exemple

I Comment coderiez-vous l’entier −6010 sur un octet par la méthode du complément à 2 ?

11000100 Le nombre +6010 est codé par l’octet 00111100. Afin d’obtenir facilement le complément à 2 de ce nombre, et, donc, le codage binaire de son opposé, il suffit de recopier les bits de droite à gauche jusqu’au premier "1" inclus, puis de continuer en inversant cette fois les bits restants.

I Supposez désormais que vous deviez coder ce même nombre, par la même méthode, mais cette fois-ci sur deux octets. Quel couple d’octets obtiendrez-vous ?

11111111 11000100 Ce genre d’opération, très commune en arithmétique binaire, consistant à ranger un nombre binaire dans un plus grand nombre de bits que le nombre de bits qu’il occupait

originellement, se nommeextension de signe.

(42)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Exemple

I Comment coderiez-vous l’entier −6010 sur un octet par la méthode du complément à 2 ?

11000100 Le nombre +6010 est codé par l’octet 00111100. Afin d’obtenir facilement le complément à 2 de ce nombre, et, donc, le codage binaire de son opposé, il suffit de recopier les bits de droite à gauche jusqu’au premier "1" inclus, puis de continuer en inversant cette fois les bits restants.

I Supposez désormais que vous deviez coder ce même nombre, par la même méthode, mais cette fois-ci sur deux octets. Quel couple d’octets obtiendrez-vous ? 11111111 11000100 Ce genre d’opération, très commune en arithmétique binaire, consistant à ranger un nombre binaire dans un plus grand nombre de bits que le nombre de bits qu’il occupait

originellement, se nommeextension de signe.

(43)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

La soustraction en somme

Ce procédé de codage a l’immense intérêt de permettre à la machine de considérer la soustraction de deux entiers comme l’addition du premier à l’opposé du second !

D’un point de vue strictement matériel, cet avantage devient plus évident encore car au lieu de concevoir une machine avec un circuit électronique gérant l’addition et un autre circuit gérant la soustraction, un seul et même circuit peut être mis en place pour réaliser les deux opérations.

(44)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

La soustraction en somme

Ce procédé de codage a l’immense intérêt de permettre à la machine de considérer la soustraction de deux entiers comme l’addition du premier à l’opposé du second !

D’un point de vue strictement matériel, cet avantage devient plus évident encore car au lieu de concevoir une machine avec un circuit électronique gérant l’addition et un autre circuit gérant la soustraction, un seul et même circuit peut être mis en place pour réaliser les deux opérations.

(45)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

L’addition-soustraction de deux entiers codés par la méthode du complément à 2.

Cliquez sur les bits de l’un et/ou l’autre des termes de l’opération pour constater les conséquences sur le résultat.

Attention ! Notez qu’un bit surnuméraire peut tout à fait apparaître avec ce genre d’addition-soustraction, sans que le résultat ne soit pour autant erroné. A l’inverse, le résultat peut tout à fait s’avérer faux sans qu’aucun bit surnuméraire n’apparaisse !

(46)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

L’addition-soustraction de deux entiers codés par la méthode du complément à 2.

Nous voyons ici que dans le cas des entiers codés par complément à 2, les dépassement de capacité (ou

overflows) ne sont plus du tout liés à l’apparition d’un bit surnuméraire. En réalité, dans ce cas très précis

d’addition-soustraction d’entiers codés par complément à 2, ils se produisent lorsque deux entiers de même signe donnent un résultat de signe opposé.

Quoi qu’il en soit, c’est toujours au processeur de surveiller le domaine de validité d’une opération de ce type et de déclencher une alerte overflow lorsque le

résultat d’une opération est trop grand ou trop petit pour pouvoir être codé par la méthode de codage utilisée par ses membres.

(47)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

L’addition-soustraction de deux entiers codés par la méthode du complément à 2.

Nous voyons ici que dans le cas des entiers codés par complément à 2, les dépassement de capacité (ou

overflows) ne sont plus du tout liés à l’apparition d’un bit surnuméraire. En réalité, dans ce cas très précis

d’addition-soustraction d’entiers codés par complément à 2, ils se produisent lorsque deux entiers de même signe donnent un résultat de signe opposé.

Quoi qu’il en soit, c’est toujours au processeur de surveiller le domaine de validité d’une opération de ce type et de déclencher une alerte overflow lorsque le

résultat d’une opération est trop grand ou trop petit pour pouvoir être codé par la méthode de codage utilisée par ses membres.

(48)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Les bits en biais

Une autre possibilité de codage des entiers signés existe : la représentation biaisée, également appelée représentation par excès. Celle-ci, très simple, consiste à considérer tout nombre binaire codé comme un entier non signé auquel on soustrait une constante, ou biais, définie selon le domaine de validité des entiers codés que l’on recherche.

(49)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage des entiers relatifs par la méthode de la représentation biaisée.

Cliquez sur les bits du nombre binaire et/ou les chiffres du nombre décimal afin de voir le codage ou le décodage binaire résultant par la méthode de la représentation biaisée. Vous pouvez également modifier la valeur du biais en cliquant sur les chiffres le composant.

(50)

Codage binaire des entiers sur un octet

NR = valeur Non Représentable

(51)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage binaire des entiers sur un octet

2 Comment décodez-vous l’octet10000001 en base 10 ?

I −127

Certes. Mais pourquoi pas 129 en numération binaire positionnelle ?

I −1

C’est vrai. Mais pourquoi pas +1 en représentation biaisée et biais égal à 128 ?

I +1

Effectivement. Mais pourquoi pas−1 en représentation signe-valeur absolue ?

I +129

Bien sûr, bien sûr. Mais pourquoi pas−127 en codage par complément à 2 ?

(52)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage binaire des entiers sur un octet

2 Comment décodez-vous l’octet10000001 en base 10 ?

I −127

Certes. Mais pourquoi pas 129 en numération binaire positionnelle ?

I −1

C’est vrai. Mais pourquoi pas +1 en représentation biaisée et biais égal à 128 ?

I +1

Effectivement. Mais pourquoi pas−1 en représentation signe-valeur absolue ?

I +129

Bien sûr, bien sûr. Mais pourquoi pas−127 en codage par complément à 2 ?

(53)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage binaire des entiers sur un octet

2 Comment décodez-vous l’octet10000001 en base 10 ?

I −127

Certes. Mais pourquoi pas 129 en numération binaire positionnelle ?

I −1

C’est vrai. Mais pourquoi pas +1 en représentation biaisée et biais égal à 128 ?

I +1

Effectivement. Mais pourquoi pas−1 en représentation signe-valeur absolue ?

I +129

Bien sûr, bien sûr. Mais pourquoi pas−127 en codage par complément à 2 ?

(54)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage binaire des entiers sur un octet

2 Comment décodez-vous l’octet10000001 en base 10 ?

I −127

Certes. Mais pourquoi pas 129 en numération binaire positionnelle ?

I −1

C’est vrai. Mais pourquoi pas +1 en représentation biaisée et biais égal à 128 ?

I +1

Effectivement. Mais pourquoi pas−1 en représentation signe-valeur absolue ?

I +129

Bien sûr, bien sûr. Mais pourquoi pas−127 en codage par complément à 2 ?

(55)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage binaire des entiers sur un octet

2 Comment décodez-vous l’octet10000001 en base 10 ?

I Aucune idée

Et vous faites rudement bien car il est foncièrement impossible de décoder un octet si l’on ignore le codage qui a servi pour le créer. En d’autres termes, un octet peut virtuellement coder n’importe quel entier ! C’est au processeur de connaître en

permanence le type de codage qui a été utilisé pour coder les nombres qu’il manipule.En

programmation, cela revient à typer les variables manipulées par le programme.

(56)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Sommaire

Numération Codage de N Codage de Z Codage de R

(57)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage de R

Un nombre réel se compose de deux parties distinctes : une partie entière, située à gauche de la virgule, et, éventuellement, une partie décimale, située après celle-ci.

Pour ce qui est de la partie entière, nous savons désormais parfaitement la coder. Mais quid de de la partie décimale ? Et bien il nous suffit de reprendre le principe de la numération positionnelle, en considérant chaque bit situé après la virgule comme associé cette fois à des puissances négative de deux, tout comme nous le faisons pour la base 10.

(58)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage de R

Un nombre réel se compose de deux parties distinctes : une partie entière, située à gauche de la virgule, et, éventuellement, une partie décimale, située après celle-ci.

Pour ce qui est de la partie entière, nous savons désormais parfaitement la coder. Mais quid de de la partie décimale ? Et bien il nous suffit de reprendre le principe de la numération positionnelle, en considérant chaque bit situé après la virgule comme associé cette fois à des puissances négative de deux, tout comme nous le faisons pour la base 10.

(59)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage de R

Ainsi, pour reprendre notre petit exercice de décomposition déjà vu plus haut, nous savons que : 5 022,78 = 5×1 000+0×100+2×10+2×1+7×0,1+8×0,01 . . . ce qui revient à écrire :

5 022,78 =

5×103+ 0×12 + 2×101+ 2×100+ 7×10−1+ 8×10−2 De la même manière, on pourra également écrire :

10111,011 =

1×24+0×23+1×22+1×21+1×20+0×2−1+1×2−2+1×2−3 . . . soit :

10111,011 =

1×16+0×8+1×4+1×2+1×1+0×0,5+1×0,25+1×0,125 . . . c’est-à-dire 10111,0112= 23,37510

(60)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage de R

Le problème, comme nous le disions il y a peu, reste le codage de la virgule. Impossible en effet de la symboliser par un bit, car comment par la suite reconnaître ce bit codant la virgule parmi tous les bits composant le nombre proprement dit ?

Problème que ne pose pas le codage du signe, par définition toujours placé au même endroit.

Le seul moyen de procéder est pour la machine de convenir une fois pour toute d’une position immuable et tacite de la virgule. Les réels codés selon cette méthode seront alors dits représentés en virgule fixe.

(61)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage de R

Le problème, comme nous le disions il y a peu, reste le codage de la virgule. Impossible en effet de la symboliser par un bit, car comment par la suite reconnaître ce bit codant la virgule parmi tous les bits composant le nombre proprement dit ?

Problème que ne pose pas le codage du signe, par définition toujours placé au même endroit.

Le seul moyen de procéder est pour la machine de convenir une fois pour toute d’une position immuable et tacite de la virgule. Les réels codés selon cette méthode seront alors dits représentés en virgule fixe.

(62)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Codage de R

Le problème, comme nous le disions il y a peu, reste le codage de la virgule. Impossible en effet de la symboliser par un bit, car comment par la suite reconnaître ce bit codant la virgule parmi tous les bits composant le nombre proprement dit ?

Problème que ne pose pas le codage du signe, par définition toujours placé au même endroit.

Le seul moyen de procéder est pour la machine de convenir une fois pour toute d’une position immuable et tacite de la virgule. Les réels codés selon cette méthode seront alors dits représentés en virgule fixe.

(63)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Numérations binaire et décimale des réels par virgule fixe

Cliquez sur les bits du nombre binaire et/ou les chiffres du nombre décimal afin d’en obtenir la conversion dans l’autre base de numération.

(64)

ISN - Codage binaire des

nombres M. Lagrave

Numération Codage deN

Conversion

Codage deZ

complément logique complément à 2

Caractéristiques bits en biais décodage

Codage deR

Numérations binaire et décimale des réels par virgule fixe

Afin de coder en base 2 un nombre inférieur à 1, il suffit de multiplier par deux ce nombre, garder la partie entière obtenue (0 ou 1) puis recommencer avec la partie fractionnaire jusqu’à la précision voulue.

Dans ce cas de figure, la virgule fixe est supposée se trouver juste devant le premier bit ; le plus petit réel codable correspond donc à l’octet 00000001 qui code la valeur

0,00390625 (soit 1/256) et le plus grand à l’octet 11111111, qui code la valeur 0,99609375 (soit 1/2 + 1/4 + 1/8 + 1/16 + 1/32 + 1/64 + 1/128 + 1/256).

Notez quand même que 256 combinaisons s’avèrent un peu léger-léger afin de coder l’infinité des réels compris entre ces deux valeurs. La probabilité est donc immense qu’un réel ne puisse être exactement codé par huit petits bits.

L’animation donne ici, pour chaque réel choisi, la valeur inférieure la plus proche pouvant être effectivement codée par l’octet.

Références

Documents relatifs

[r]

x1 , x2 : sont les solutions recherchées pour cette équation de type réel delta : variable de type réel intermédiaire pour le calcul de delta.. 4/5 Remarque : Dans cet algorithme,

Soient premier et dernier les extrémités gauche et droite de l'intervalle dans lequel on cherche la valeur x, on calcule m, l'indice de l'élément médian :. m(premier + dernier) div

Devoir Surveillé 3 - durée : 1 h 7 décembre 2010 Les documents, la calculatrice, et tout matériel électronique sont interdits.. Le soin, la précision et la qualité de la

Un code pour le cadenas est donc un nombre constitué de 6 chires, chacun d'entre eux provenant d'une des roues. (Les réponses aux questions suivantes devront être précisément

Erire un programme C permettant de saisir au lavier un nombre entier stritement

Q 2 Il écrit ensuite sur une même ligne la suite croissante S 2 des n entiers naturels consécutifs en partant de l'entier 1 auquel il affecte le signe "+" puis il

Pour les plus courageux : un entier naturel quelconque peut-il être représenté par la différence de deux nombres puissants.. Solution par