Méthodes de minimisation. Méthodes de minimisation des fonctions logiques. Base logique du fonctionnement de l'ordinateur

Systèmes numériques

Système de numérotation binaire

8ème système de numérotation

16ème système de numérotation

Encodage des nombres 15

Codage entier 16

Multiplication et division 21

Avantages et inconvénients 25

Système de numérotation binaire

En binaire ) le système numérique ne comporte que deux chiffres, appelés binaire (chiffres binaires). L'abréviation de ce nom a conduit à l'émergence du terme peu , qui est devenu le nom du chiffre d'un nombre binaire. Les poids des chiffres dans le système binaire varient par puissance de deux. Puisque le poids de chaque chiffre est multiplié par 0 ou 1, la valeur résultante du nombre est déterminée comme la somme valeurs correspondantes puissances de deux. Si un bit d’un nombre binaire est égal à 1, on l’appelle le bit significatif. Écrire un nombre en binaire est beaucoup plus long que l'écrire système décimal Compte.

Opérations arithmétiques, effectuées dans le système binaire sont soumises aux mêmes règles que dans le système décimal. Ce n'est que dans le système binaire que le transfert des unités vers le chiffre le plus significatif se produit plus souvent que dans le système décimal. Voici à quoi ressemble une table d'addition en binaire :

0 + 0 = 0 0 + 1 = 1

1 + 0 = 1 1 + 1 = 10 (transfert en ordre élevé)

La table de multiplication des nombres binaires est encore plus simple :

0 * 0 = 0 0 * 1 = 0 1 * 0 = 0 1 * 1 = 1

Un exemple d'exécution de l'opération d'addition dans le système de nombres binaires :

1 1 1

1 0 1 1 2 La couleur rouge montre le transfert des chiffres de poids faible vers

1 1 0 2 plus âgé

1 0 0 0 1 2

Pour vérifier l’exactitude de l’opération, convertissons les trois nombres du système binaire au 10 :

1011 = 1*2 3 + 1*2 1 + 1 = 8 + 2 + 1 = 11 10

3 2 1 0

110 = 1*2 2 + 1*2 1 = 4 + 2 = 6 10

2 1 0

10001 = 1*2 4 + 1 = 16 + 1 = 17 10

4 3 2 1 0

La somme des deux premiers nombres (11 et 6) est égale au troisième nombre (17), l'opération a donc été effectuée correctement.

Veuillez noter que lorsque vous en ajoutez un autre à un nombre composé de uns (11...1), vous obtenez un nombre égal à 1 avec le nombre de zéros égal au nombre de uns du nombre d'origine, par exemple :

1111 1111 2 + 1 = 1 0000 0000 2 = 2 8

Un exemple d'exécution d'une opération de soustraction dans le système de nombres binaires :

La soustraction s'effectue selon les mêmes règles que dans le 10ème système, mais dans le 10ème système, lors de l'emprunt d'une unité du chiffre le plus élevé, elle se transforme en 10 unités du chiffre le plus bas, et dans le 2ème système, en 2 unités. Si vous devez effectuer un prêt non pas dans le rang adjacent, mais plus à gauche, alors sur deux unités du rang actuel, une reste dans ce rang et la seconde est transférée vers la droite. Comparer:

9 9 10 1 1 2

1 0 0 0 10 1 0 0 0 2

1 - 1

9 9 9 10 1 1 1 2

Effectuons la soustraction 17 dans le 2ème système numérique 10 6 10 :

0 1 1 2

1 0 0 0 1 2

1 1 0 2

1 0 1 1 2 = 11 10 Le contrôle montre que la soustraction a été effectuée correctement.

Si dans le système de nombres binaires vous soustrayez 1 d'un nombre qui est une puissance de deux, vous obtenez un nombre composé de uns dont le nombre est égal au nombre de zéros du nombre binaire, par exemple :

2 8 - 1 = 1 0000 0000 2 1 = 1111 1111 2

1023 = 1024 1 = 2 10 1 = 11 1111 1111 2

Un exemple d'exécution d'une opération de multiplication dans le système de nombres binaires :

1 1 0 1 2 = 13 10

* 1 0 1 2 = 5 10

1 1 0 1

1 1 0 1

1 0 0 0 0 0 1 2 = 2 6 +1 = 64 +1 =65 10 (13 * 5 = 65)

6 5 4 3 2 1 0

Examinons de plus près comment le processeur effectue la multiplication des nombres binaires. Multiplions le nombre 1101 par 101 (les deux nombres sont dans le système de nombres binaires). La machine procède de la manière suivante : elle prend le nombre 1101 et, si le premier élément du deuxième facteur en partant de la droite est égal à 1, alors elle l'inscrit dans la somme. Déplace ensuite le nombre 1101 vers la gauche d'une position, obtenant ainsi 11010 et, si, le deuxième élément du deuxième facteur égal à un, puis l'ajoute à la somme. Si l'élément du deuxième facteur égal à zéro, alors le montant ne change pas. Ce processus de déplacements et d'ajouts se répète.

Un exemple d'exécution d'une opération de division dans le système de nombres binaires :

La division binaire est basée sur la méthode familière de la division décimale, c'est-à-dire qu'elle revient à effectuer des opérations de multiplication et de soustraction. Effectuer la procédure principale - choisir un nombre multiple du diviseur et destiné à réduire le dividende - est ici plus simple, puisqu'un tel nombre ne peut être que 0 ou le diviseur lui-même.

A titre d'exemple, divisons 143 10 = 10001111 2 par 13 10 = 1101 2

1 0 0 0 1 1 1 1 1 1 0 1

1 1 0 1 1 0 1 1 2 = 11 10

1 0 0 1 1

1 1 0 1

1 1 0 1

1 1 0 1

La vérification montre que la division est correcte (143 / 13 = 11).

Multiplier ou diviser un nombre binaire par 2 déplace la virgule décimale séparant la partie entière de la partie fractionnaire d'une place respectivement vers la droite ou la gauche :

1011 2 * 10 2 = 10110 2.

1011 2 / 10 2 = 101.1 2.

8ème système de numérotation

Lors de la configuration du matériel informatique ou de la création nouveau programme il est nécessaire de « regarder à l’intérieur » de la mémoire de la machine afin de l’évaluer état actuel. Mais tout y est rempli de longues séquences de zéros et de uns de nombres binaires. Ces séquences sont très peu pratiques à percevoir par une personne habituée à plus brève note nombres décimaux. De plus, les capacités naturelles de la pensée humaine ne nous permettent pas d'estimer rapidement et précisément la valeur d'un nombre représenté, par exemple, par une combinaison de 16 zéros et uns.

Pour faciliter la perception d'un nombre binaire, ils ont décidé de le diviser en groupes de chiffres, par exemple trois ou quatre chiffres. Cette idée s'est avérée très réussie, puisqu'une séquence de trois bits a 8 combinaisons et une séquence de 4 bits en a 16. Les nombres 8 et 16 sont des puissances de deux, il est donc facile de faire correspondre des nombres binaires. En développant cette idée, nous sommes arrivés à la conclusion que des groupes de bits peuvent être codés tout en réduisant la longueur de la séquence de caractères. Pour coder trois bits, huit chiffres sont nécessaires, nous avons donc pris les nombres de 0 à 7 du système décimal. Pour coder quatre bits, seize caractères sont nécessaires ; pour cela nous avons pris 10 chiffres du système décimal et 6 lettres alphabet latin: A, B, C, D, E, F. Les systèmes résultants, ayant les bases 8 et 16, étaient appelés respectivement octal et hexadécimal.

En octal Le système numérique (octal) utilise huit chiffres différents : 0, 1, 2, 3, 4, 5, 6, 7. La base du système est 8. Lors de l'écriture de nombres négatifs, un signe moins est placé avant la séquence de chiffres. L'addition, la soustraction, la multiplication et la division des nombres représentés dans le système numérique octal sont effectuées très simplement, tout comme dans le système numérique décimal bien connu.

Un exemple d'exécution de l'opération d'addition dans le système de nombres octaux :

1 1 La couleur rouge montre le transfert des chiffres bas vers les chiffres élevés.

4 7 6

3 4 1) 6 + 4 = 10 = 1*8 + 2 = 12 8

5 3 2 2) 1 + 7 + 3 = 1*8 + 3 = 13 8

3) 1 + 4 = 5

Vérifions le résultat en convertissant les nombres au système de nombres décimaux :

476 8 = 4*8 2 + 7*8 + 6 = 318 318

34 8 = 3*8 + 4 = 28 + 28

532 = 5*8 2 + 3*8 + 2 = 346 346

Un exemple d'exécution d'une opération de soustraction dans le système de nombres octaux :

7 8 La couleur rouge montre le transfert des chiffres les plus significatifs vers juniors

5 3 2 Effectuer une opération sur chaque chiffre :

3 4 1) 8 + 2 4 = 6

4 7 6 2) 7 + 2 - 3 = 1 *8 + 3 = 13 8

3) 1 + 4 = 5

Un exemple d'exécution d'une opération de multiplication dans le système de nombres octaux :

5 4 54 4*4 = 16 = 2 *8 + 0 = 20 8 (écrire 0)

* 3 4 * 4 2+ 5*4 = 22 = 2 *8 + 6 = 26 8

2 6 0 260

2 0 4

2 3 2 0 54 4*3 = 12 = 1 *8 + 4 = 14 8 (écrire 4)

* 3 1 + 5*3 = 16 = 2 *8 + 0 = 20 8

Vérifions:

54 8 = 5*8 + 4 = 44 10 44

34 8 = 3*8 + 4 = 28 10 * 28

2320 8 = 2*8 3 + 3*8 2 + 2*8 = 1232 10 352

88 = 1232 10

Un exemple d'exécution d'une opération de division dans le système de nombres octaux :

2 3 2 0 8 5 4 8

2 0 4 3 4 8

2 6 0

2 6 0

La division dans le système octal est similaire à la division dans le système décimal : vous devez sélectionner les chiffres du quotient. On divise 232 par 54, dans le système décimal on obtiendrait le quotient entier 4, mais de l'exemple précédent on sait que dans le système octal 54 * 4 = 260, c'est beaucoup, essayons de prendre un nombre plus petit 3, multipliez 54 * 3 = 204, le nombre correspond, etc.

DANS diverses langues entrée de programmation nombres octaux commence par 0, par exemple, l'entrée 011 signifie le nombre décimal 9.

16ème système de numérotation

DANS hexadécimalLe système numérique (hexadécimal) utilise dix chiffres de 0 à 9 et les six premières lettres de l'alphabet latin :

10 UNE 11 B 12 C 13 D 14 E 15 F .

Lorsque vous écrivez des nombres négatifs, placez un signe moins à gauche de la séquence de nombres.

Pour qu'en écrivantprogrammes informatiquesPour distinguer les nombres écrits en hexadécimal des autres, mettez 0x devant le nombre. Autrement dit, 0x11 et 11 sont des nombres différents.

Le système de nombres hexadécimaux est largement utilisé pour spécifier différentes nuances de couleur dans le codage informations graphiques (Modèle RVB). Ainsi, dans l'éditeur hypertexte Netscape Composer, vous pouvez définir les couleurs de l'arrière-plan ou du texte en décimal et en systèmes hexadécimaux notation (voir figure).

Un exemple d'exécution de l'opération d'addition dans le 16ème système numérique :

1 1 La couleur rouge montre le transfert des bits de poids faible

A7B16 Effectuer une opération sur chaque chiffre :

C 8 16 B + 8 = 11 + 8 = 19 = 1*16 + 3 = 13 16 (notez 3)

B 4 3 16 1 +7+С = 8+12 = 20 = 1*16 + 4 = 14 16 (notez 4)

1 + A = B

Vérifions le résultat en convertissant les nombres au 10ème système :

A7B 16 = 10*16 2 + 7*16 +11 = 2683

2 1 0 2683

C8 16 = 12*16 + 8 = 200 + 200

1 0 2883

B 43 16 = 11*16 2 + 4*16 +3 = 2883

2 1 0

Un exemple d'exécution d'une opération de soustraction dans le 16ème système numérique :

15 16 Le prêt à partir des chiffres les plus élevés est affiché en rouge

B 4 3 16 Effectuer une opération sur chaque chiffre :

A 7 B 16 16 + 3 B = 19 -11 = 8

C 8 16 15 + 4 7 = 12 = C

B-1 A = 0

La multiplication et la division dans le 16ème système ne sont généralement pas effectuées en raison de la complexité des calculs.

Conversion de nombres d'un système numérique à un autre

Conversion d'un nombre à partir d'un système de numérotation de base q au 10ème système numérique s'effectue en calculant la valeur du polynôme par puissances q , dont les coefficients sont égaux aux chiffres du nombre.

Considérons diverses manières convertir des nombres d'un système numérique à un autre à l'aide d'exemples spécifiques.

Transfert du système 2 vers le système 10

1 0 1 1 . 1 0 1 2 = 1*2 3 + 0*2 2 + 1*2 + 1*2 0 + 1*2 -1 + 0* 2 -2 + 1*2 -3 =

3 2 1 0 -1 -2 -3

8 + 2 + 1 + 0.5 + 0.125 = 11.625

Afin de convertir rapidement des nombres du système de nombres binaires en 10, vous devez vous rappeler les puissances de deux : 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, etc. Puissances négatives de deux : .5, .25, .125, .0625, .03125, etc.

Passage du 8ème système au 10ème

6 3 2.4 5 8 = 6*8 2 + 3*8 + 2 + 4* 8 -1 + 5*8 -2 = 6*64 + 24 + 2 +4 /8 + 5/64 =

2 1 0 -1 -2

410.578125

Passage du 16ème système au 10ème

E 7 F.8 16 = 14*16 2 + 7*16 + 15 + 8/16 = 14*256 + 7*16 + 15 + .5 = 3711.5

2 1 0 -1

Passage du 10ème système au 2ème

Transfert du 10ème système de l'ensemble et parties fractionnaires effectué selon divers algorithmes, nous les considérerons donc séparément.

Traduction de toute la partie

Supposons que vous souhaitiez convertir le nombre décimal 567 en système binaire. Tout d’abord, nous déterminons la puissance maximale de deux, telle que deux à cette puissance soit inférieur ou égal au nombre d’origine. Dans notre cas c'est 9, car 2 9 =512, et 2 10 =1024, ce qui est supérieur au nombre initial. De cette façon, nous obtenons le nombre de chiffres du résultat. Il est égal à 9+1=10. Par conséquent, le résultat ressemblera à 1ххххххххх, où x peut être remplacé par n'importe quel chiffres binaires. Trouvons le deuxième chiffre du résultat. Élevons deux à la puissance 9 et soustrayons du nombre d'origine : 567-2 9 =55. Le reste est comparable au chiffre 2 8 =256. Puisque 55 est inférieur à 256, le neuvième chiffre sera zéro, c'est-à-dire que le résultat prendra la forme 10xxxxxxxxxx. Considérons la huitième catégorie. Depuis 2 7 =128>55, alors ce sera zéro.

Le septième chiffre s'avère également être zéro. À la recherche de notation binaire le numéro prend la forme 1000xxxxxxx. 2 5 =32<55, поэтому шестой разряд равен 1 (результат 10001ххххх). Для остатка 55-32=23 справедливо неравенство 2 4 = 16 < 23, что означает равенство единице пятого разряда. Действуя аналогично, получаем в результате число 1000110111. Мы разложили данное число по степеням двойки:

567=1*2 9 + 0*2 8 + 0*2 7 + 0*2 6 + 1*2 5 + 1*2 4 + 0*2 3 + 1*2 2 + 1*2 1 + 1*2 0

Une autre façon e Pour convertir des nombres, on utilise l'opération de division en colonne. Considérons le même nombre 567. En le divisant par 2, on obtient le quotient 283 et reste 1. Effectuons la même opération avec le nombre 283. On obtient le quotient 141, reste 1. Encore une fois on divise le quotient résultant par 2, et ainsi de suite jusqu'à ce que le quotient ne soit pas inférieur au diviseur. Maintenant, pour obtenir un nombre dans le système de numération binaire, il suffit d'écrire le dernier quotient, c'est-à-dire 1, et d'y ajouterdans l'ordre inversetous les résidus obtenus lors du processus de division.

Le résultat, bien sûr, n’a pas changé : 567 dans le système de nombres binaires s’écrit 1000110111.

Puisque diviser par 2 est facile, ce processus peut être écrit de manière plus compacte :

Privé | Reste

567 | 1 567 = 1000110111 2

283 | 1

141 | 1

70 | 0

35 | 1

17 | 1

8 | 0

4 | 0

2 | 0

1 | 1

Traduction fractionnaire

Algorithme de traduction fractionnaire:

  1. multipliez successivement la partie fractionnaire par la base du nouveau système numérique jusqu'à ce que nous obtenions une partie fractionnaire nulle ou que la précision de calcul requise soit atteinte.
  2. Notez les parties entières des œuvres résultantes dans une séquence directe

Exemples :

  1. convertissez 0,65625 en 2e système numérique.

Multipliez la partie fractionnaire par 2 :

partie entière partie fractionnaire

oeuvres d'art

65625

1 3125

0 625

1 25

0 .65625 = 0.10101 2

  1. convertissez 0,1 en 2e système numérique.

Multipliez la partie fractionnaire par 2:

partie entière partie fractionnaire

oeuvres d'art

0 2 On multiplie seulement la partie fractionnaire !

0 4 À partir de ce point, le processus se répète

. . .

  1. = 0. 0 0011 0011 0011 …

Suite à la conversion de la plupart des nombres décimaux qui ont une partie fractionnaire, le résultat est un nombre avec une fraction infinie, donc les nombres réels ne sont pas stockés avec précision dans un ordinateur !

Passage du 10ème système au 8ème

Traduction de toute la partie

Algorithme de conversion du système décimal au système numérique de base q il est plus pratique de diviser et d'écrire les restes dans l'ordre inverse, nous l'utiliserons donc pour convertir les nombres vers les systèmes 8e et 16e.

Envisageons de convertir le nombre 567 en système numérique de base 8.

567 = 1067 8

Traduction fractionnaire

Convertissons 0,65625 au 8ème système numérique.

Multipliez la partie fractionnaire par 8 :

partie entière partie fractionnaire

oeuvres d'art

65625

5 25 On multiplie seulement la partie fractionnaire !

0 .65625 = 0. 52 8

Passage du 10ème système au 16ème

Traduction de toute la partie

Divisez le nombre par 16 et écrivez le reste dans l’ordre inverse :

Dans le système de nombres hexadécimaux, vous devez remplacer 10 par A, 11 à B et ainsi de suite.

Traduction fractionnaire

Convertissons 0,65625 au 16ème système numérique.

Multipliez la partie fractionnaire par 16 :

partie entière partie fractionnaire

oeuvres d'art

65625

10(A)5 On multiplie seulement la partie fractionnaire !

0,65625 = 0. UNE 8 16

Transfert du 2ème système au 8ème ou au 16ème et retour

Peut-être le moyen le plus simple de convertir des nombres du système binaire en systèmes dont la base est égale à des puissances de deux (8 ou 16), et vice versa. Afin d'écrire un nombre entier binaire dans le système numérique de base 2 n, tu as besoin

  • diviser le nombre binaire donné en groupes selon n chiffres dans chacun de droite à gauche en totalitéet de gauche à droite en fractionnaire;
  • s'il y en a moins dans le dernier groupe n chiffres, puis ajoutez des zéros au nombre de chiffres requis ;
  • considérer chaque groupe comme n -numéro binaire de bits, et remplacez-le par le chiffre correspondant dans le système numérique de base 2 n.

Table de conversion du binaire au 16ème et inversement

Valeur décimale

Code binaire

Chiffre hexadécimal

0 000

0 001

0 010

0 011

0 100

0 101

0 110

0 111

1000

1001

1010

1011

1100

1101

1101

1111

La partie du tableau surlignée en turquoise peut être utilisée pour passer du système 2 au système 8 et inversement.

Exemples :

  1. Convertissons le nombre 11101.00111 2 du binaire à l'octal.

On décompose le nombre binaire en triplets de chiffres :

11101.00111 2 = 011 101.001 110 2 = 35.16 8

On remplace chaque triplet de chiffres binaires par le 8ème chiffre correspondant (voir tableau).

Pour convertir un nombre du 8ème système numérique au 2ème, vous devez remplacer chaque 8ème chiffre par un triple de chiffres binaires (prenons le même exemple de droite à gauche).

  1. Convertissons le nombre 10000.110111 2 au 16ème système.

Nous divisons le nombre binaire en quatre chiffres :

10000.110 1 11 2 = 000 1 0000.110 1 11 00 2 = 10.DC 16

On remplace chaque quadruple de chiffres binaires par le 16ème chiffre correspondant (voir tableau).

Pour convertir un nombre du 16ème système numérique au 2ème, vous devez remplacer chaque 16ème chiffre par quatre chiffres binaires (prenez le même exemple de droite à gauche).

Exemples de codage binaire d'informations

Parmi la variété des informations traitées par un ordinateur, une partie importante est constituée d'informations numériques, textuelles, graphiques et audio. Faisons connaissance avec quelques façons de coder ces types d'informations dans un ordinateur.

Encodage des nombres

Il existe deux formats principaux pour représenter les nombres dans la mémoire de l'ordinateur. L'un d'eux est utilisé pour coder des entiers, le second (la représentation dite à virgule flottante d'un nombre) est utilisé pour spécifier un certain sous-ensemble de nombres réels.

Codage entier

L'ensemble des entiers représentables dans la mémoire de l'ordinateur est limité. La plage de valeurs dépend de la taille de la zone mémoire utilisée pour stocker les nombres. DANS k -une petite cellule peut en stocker 2 k différentes valeurs d'entiers.

Les entiers peuvent être de 1, 2, 4 ou 8 octets (pour les machines 64 bits).

Pour obtenir la représentation interne d’un entier positif N stocké dans k -mot machine de bits, vous avez besoin de :

1. convertir un nombre N au système de nombres binaires ;

2. compléter le résultat obtenu avec des zéros insignifiants à gauche pour k chiffres.

Un code entier peut être considéré comme un nombre binaire signé ou non signé.

Lorsqu'il n'est pas signétous les chiffres sont utilisés pour enregistrer la valeur d'un nombre.

Exemple:

Le nombre 107 = 1101011 2 s'écrira :

dans 1 octet comme 01101011

en 2 octets sous la forme 00000000 01101011

1er octet 0ème octet

en 4 octets sous la forme 00000000 00000000 00000000 01101011

3ème octet 2ème octet 1er octet 0ème octet

Le nombre minimum non signé est 0. Le nombre maximum non signé est 2 n 1, où n le nombre de chiffres binaires utilisés pour enregistrer un nombre.

Par exemple, pour une représentation sur 2 octets maximum =11111111 11111111 2 =
1 00000000 00000000 1 = 2
16 1 = 65 535

Pour écrire des nombres signés, le chiffre le plus significatif (à gauche) est attribué au signe du nombre. Si le nombre n'est pas négatif, alors 0 est écrit dans le bit de signe, sinon 1, c'est-à-dire Un dans le chiffre du signe signifie un signe moins.

Les entiers signés peuvent être écritsen marche avant, arrière et code supplémentaire.

En code direct le nombre est stocké sous la forme : signe + valeur absolue (module) du nombre.

En code inversé dans le sens Les nombres zéros sont remplacés par des uns et les uns par des zéros.

Le code complémentaire s'obtient en ajoutant 1 à l'inverse.

Code inversé et supplémentairenon négatif Nombres coïncide avec le direct.

Les codes de nombres réciproques et complémentaires permettent de remplacer l'opération de soustraction par une addition par un nombre négatif, ce qui simplifie considérablement la conception du processeur. Des variantes d'opérations arithmétiques seront discutées ci-dessous.

Exemple . Considérons la représentation interne d'un entier négatif : -6 = 110 2 .

Un seul octet :

Indicatif direct : 1 000 0110

Code retour : 1 111 1001

Supplémentaire : 1 111 1001

1 111 1010

Quatre octets:

Code direct : 1 0000000 00000000 00000000 00000110

Code retour : 1 111111 1111111 11111111 111 1 1001

Supplémentaire : 1 111111 1111111 11111111 11111001

1 111111 1111111 11111111 11111010

Afin d'obtenir la valeur d'un nombre négatif écrit en code complément à deux, vous pouvez utiliser l'un des deux algorithmes suivants :

1) soustraire 1 du code complémentaire (on obtient le code inverse) et remplacer tous les zéros par des uns, et les uns par des zéros ;

2) remplacez d'abord tous les zéros par des uns, les uns par des zéros, puis ajouter un au résultat.

Exemple: Prenons un octet supplémentaire. code : 1111 1010 et utilisez le deuxième algorithme : 1111 1010 --> - (0000 0101 + 1) = - 110 2 = -6.

Plage de numéros signés

Considérons une représentation sur un octet. Codes supplémentaires possibles pour les numéros signés :

0111 1111

. . .

0000 0001

0000 0000

1111 1111

1111 1110 Nombres négatifs

. . .

1000 0000

Regardons les valeurs décimales de ces nombres :

0111 1111 = 2 7 1 = 128 - 1 = 127

0000 0001 = 1

0000 0000 = 0

1111 1111 -> -(000 0000 + 1) = -1

1111 1110 -> -(000 0001 + 1) = -2

1000 0000 -> -(111 1111 + 1) = -(1000 0000) = -2 7 = -128

Ainsi, la plage de valeurs des nombres codés signés est la suivante :
de -128 à 127.

De même, la plage de valeurs pour les entiers codés sur deux octets est la suivante :
-2 15 - +(2 15 -1) (de -32768 à 32767).

Plage de valeurs pour les entiers signés sur quatre octets :
-2 31 - +(2 31 1) ( du -2 147 483 648 au 2 147 483 647)

Additionner et soustraire des nombres entiers

La plupart des ordinateurs n'utilisent pas l'opération de soustraction. Au lieu de cela, il est produitajout d'inverse ou supplémentairecodes minuend et soustrahend. Cela permet de simplifier considérablement la conception de l'unité arithmétique-logique du processeur.

Ajout de codes inversés. Ici, lors de l'addition des nombres A et B, quatre cas principaux et deux cas particuliers se produisent :

1. A et B sont positifs. Lors de la sommation, tous les chiffres sont ajoutés, y compris le chiffre du signe. Puisque les chiffres de signe des termes positifs sont égaux à zéro, le chiffre de signe de la somme est également zéro. Par exemple:

Le résultat correct a été obtenu.

Par exemple:

Le résultat correct a été obtenu dans le code inverse. Lors de la conversion en code direct, les bits de la partie numérique du résultat sont inversés : 1 0000111 = 7 10 .

Par exemple:

L'ordinateur corrige ce qui a été initialement reçu mauvais résultat(6 au lieu de 7)transfert d'unitédu chiffre du signe au chiffre le moins significatif de la somme.

4. A et B sont négatifs.Par exemple:

Le résultat incorrect initialement obtenu (code inversé du chiffre 1110 au lieu de code inverse numéros 1010 ) l'ordinateur corrige en transférant l'unité du chiffre du signe au chiffre le moins significatif de la somme. Lors de la conversion du résultat en code direct, les bits de la partie numérique du nombre sont inversés : 1 0001010 = 1010 .

Débordement

Lors de l'ajout, une situation peut survenir lorsque les bits de poids fort du résultat de l'opération ne rentrent pas dans la zone mémoire qui lui est allouée. Cette situation est appeléeDébordement de la grille de bits du format numérique.Pour détecter un débordement et notifier un ordinateur d'une erreur survenue, moyens spéciaux. Vous trouverez ci-dessous deux cas possibles de débordement.

5. A et B sont positifs, la somme de A+B est supérieure ou égale à 2n1, où n nombre de chiffres du format numérique (pour le format à un octet n=8, 2n1 = 2 7 = 128). Par exemple:

Attention : l'ajout de nombres positifs entraîne un résultat négatif !

Sept chiffres de la partie numérique d'un format numériquepas assezpour accueillir une somme à huit chiffres (16210 = 10100010 2 ), c'est pourquoile bit le plus significatif de la somme se trouve dans le bit de signe.Cela provoqueinadéquation entre le signe de la somme et les signes des termes, Quoiest une preuve de débordement de la grille de bits.

6. A et B sont négatifs, la somme des valeurs absolues de A et B est supérieure ou égale à 2n1. Par exemple:

En additionnant des nombres négatifs, le résultat est > 0 !

Ici, le signe de la somme ne coïncide pas non plus avec les signes des termes, ce qui indique un débordement de la grille de bits.

Ajout de codes supplémentaires. Les six cas évoqués ci-dessus se produisent également ici :

1. A et B sont positifs.Il n'y a pas ici de différences avec le cas 1, considéré pour le code inverse (les codes des nombres non négatifs sont les mêmes).

2. A est positif, B est négatif et selon valeur absolue plus que A.Par exemple:


Le résultat correct a été obtenu dans le code complément à deux. Lors de la conversion en code direct, les bits de la partie numérique du résultat sont inversés et un est ajouté au chiffre le moins significatif : 1 0000110 + 1 = 1 0000111 = 7
10 .

3. A est positif, B est négatif et est inférieur en valeur absolue à A.Par exemple:

Le résultat correct a été obtenu. Unité de transfert du bit de signe de l'ordinateurrejette.

4. A et B sont négatifs.Par exemple:

Le résultat correct a été obtenu dans le code complément à deux.Unité de transfertdepuis l'ordinateur de la catégorie signéerejette.

Cas de débordement

Pour détecter un débordement de la grille de bits, le bit de signedupliqué. Cette représentation des nombres est appeléemodifiécode supplémentaire :

1) 65 00 100 0001

+ 97 + 00 110 0001

162 01 010 0010

Différents numéros dans les bits de signe indiquent qu'un débordement s'est produit.

2) -65 11 011 1111

+ -97 + 11 001 1111

-162 10 101 1110

Débordement!

Pour vérifier les bits de signe, utilisez le résultat de l'opération « OU exclusif », qui donne la valeur 1 uniquement si les opérandes sont différents.

Une comparaison des formes considérées de codage des entiers signés montre :

l'ordinateur passe moins de temps à convertir un nombre négatif en son code inverse qu'à le convertir en son code complémentaire,puisque ce dernier se compose de deux étapes : la formation du code inverse et l'ajout d'un à son chiffre le moins significatif ;

le temps d'exécution de l'addition pour les codes de nombres supplémentaires est inférieur à celui de leurs codes réciproques,car dans un tel ajout, il n'y a pas de transfert de un du chiffre du signe au chiffre le moins significatif du résultat, donc pour accélérer les calculs qu'ils utilisentcode supplémentaire.

Multiplication et division

Dans de nombreux ordinateurs, la multiplication est effectuée sous la forme d'une séquence d'additions et de décalages. Pour ce faire, l'ALU dispose d'un registre appelé additionneur accumulateur, qui contient le nombre zéro avant le début de l'opération. Au cours de l'opération, le multiplicande et les résultats des additions intermédiaires y sont alternativement placés, et à la fin de l'opération, le résultat final.

L'autre registre ALU impliqué dans cette opération contient d'abord le multiplicateur. Puis, au fur et à mesure des additions, le nombre qu’il contient diminue jusqu’à atteindre zéro.

À titre d'illustration, multiplions 1100112 au 1011012 .

Divisionest une opération difficile pour un ordinateur. Il est généralement mis en œuvre en ajoutant à plusieurs reprises un code diviseur supplémentaire au dividende.

Encodage de nombres réels

Format à virgule flottanteutilise une représentation en nombres réelsR.comme produit de la mantissembasé sur le système numériqueqdans une certaine mesurep, qui s'appelle l'ordre :R. = m * qp.

Représenter un nombre sous forme de virgule flottante est ambigu. Par exemple, les égalités suivantes sont vraies :

12.345 = 0.0012345 * 10 4 = 1234.5 * 10 -2 = 0.12345 * 10 2

Le plus souvent utilisé dans les ordinateursnormaliséreprésentation d'un nombre sous forme de virgule flottante.Mantissedans une telle représentation doit satisfaire à la condition : 0,1p <= m < 1. Иначе говоря, мантисса должна быть меньше 1 и первая chiffre significatif- pas nul (p- base du système numérique).

Dans la mémoire de l'ordinateur, la mantisse est représentée comme un entier contenant uniquement des chiffres significatifs (0 entiers et une virgule ne sont pas stockés), donc pour le nombre 12,345, le nombre 12345 sera stocké dans la cellule mémoire allouée au stockage de la mantisse sans ambiguïté. restaurer le numéro d'origine, il ne reste plus qu'à conserver son ordre, dans cet exemple il s'agit du 2.

La plage et la précision de la représentation des nombres dépendent du nombre de chiffres attribués à l'exposant et à la mantisse. Généralement, un nombre à virgule flottante prend 4 (flotter) ou 8 (double) octets.

Dans la plupart des ordinateurs, pour simplifier les opérations sur les commandes, celles-ci sont réduites à des entiers positifs en utilisant ce qu'on appellecaractéristiques. Pour ce faire, un entier positif égal à la moitié de la plage représentable des ordres est ajouté à l’ordre réel.

Les nombres à virgule flottante ont différents formats selon les machines informatiques (VM). Actuellement, une norme développée par le centre international de normalisation est recommandée pour toutes les VMIEEE (DansinstitutdeÉlectriqueetÉlectroniqueIngénieurs).

StandardIEEE 754

Le format de représentation des nombres à virgule flottante recommandé pour toutes les VM est défini par la normeIEEE754. Cette norme a été développée pour faciliter le portage de programmes d'un processeur à un autre et a été largement utilisée dans presque tous les processeurs et coprocesseurs arithmétiques.

Riz. 2.24.Formats de baseIEEE754 : un seul ; b double

La norme définit les formats 32 bits (simple) et 64 bits (double) (Figure 2.24) avec un ordre de 8 et 11 bits, respectivement. Le bit le plus à gauche stocke le signe du nombre. La base du système numérique est 2.

Le décalage est respectivement de 127 et 1023.

L'ordre maximum qu'un nombre peut avoir est 127 et 1023.

Pour augmenter la précision de la représentation de la mantisse, la technique des unités cachées est utilisée : puisque dans la mantisse normalisée le chiffre le plus élevé est toujours égal à 1, il n'est pas nécessaire de le stocker. Par conséquent, avec une représentation sur 4 octets, la mantisse est en réalité composée de 24 bits. L'unité cachée est restaurée lors de l'exécution d'opérations arithmétiques et est supprimée lors de l'écriture du résultat.

Exemple : considérons le code à 4 octets pour le nombre 20,5 :

20.5 = 10100.1 2 = 0.101001 * 2 5

Ordre (décalage) : 5+127 = 132 = 1000 01002

Mantisse : 101001010010…0 (la première unité est masquée, des zéros sont ajoutés à la fin de la mantisse).

Représentation sur 4 octets :

0

1

0

0

0

0

1

0

0

0

1

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

ordre de mantisse

Dans la 16ème forme, ce code ressemblera à ceci : 42240000.

Déterminons le nombre maximum et sa précision avec une représentation sur 4 octets.

Nombre maximum :

.1…1 * 2 127 = 1 * 2 127 = 1.7 * 10 38

Valeur maximale de la mantisse :

1…1 (24 unités) = 224 1 = 210*2.4 = 1024 2.4 = 1.7*10 7 , donc la précision de la représentation de la mantisse est de 7 à 8 chiffres significatifs.

Opérations arithmétiques avec des nombres à virgule flottante

Addition et soustraction

Réalisé en plusieurs étapes :

  1. Les ordres des nombres sont alignés vers les plus élevés (afin de ne pas avoir de mantisses > 1)
  2. Les mantisses sont ajoutées. Pour représenter les nombres négatifs, un code de complément à deux modifié est utilisé. L'ordre de la somme sera égal à ordre général termes.
  3. Le résultat est normalisé : l'ordre et la mantisse sont modifiés pour que le premier chiffre significatif du résultat tombe dans la première décimale.

Exemple 1 :Soustraire du nombreUN= 20,0 nombreB = 11.0.

UN = 20 = 10100 2 = .101 * 2 5 = .101 * 10 101 (tous les nombres sont binaires)

B = 11 = 1011 2 = .1011 * 2 4 = .1011 * 10 100

UNordre des numérosBet obtient 1. Parce que ordre des numérosUNun de plus que l'ordre du nombreB, ordre des numérosBaugmente de 1 et la mantisse se décale de 1 chiffre vers la droite par rapport au point :

B = 0,01011 * 10101

Mantisse du nombreBdevrait être écrit comme nombre négatif(il faut faire une soustraction) :

B = -010110…0 =1| 101001…1 = 1 | 101010…0

Code retourSupplémentaire

Ajout de mantisses dans le code du complément à deux modifié :

00| 1010 00…0 (numéroUN)

+ 11| 1010 10…0 (nombreB)

1 | 00| 0100 10…0 (somme, commande = 1012 )

Normalisation du résultat : la mantisse est décalée vers la gauche, l'ordre est réduit :UN - B = .1001* 10 100 = 1001 2 = 9.0

Exemple 2 :PliUN= 5,0 etB = 28.0.

UN = 5 = 101 2 = .101 * 2 5 = .101 * 10 11 (tous les nombres sont binaires)

B = 28 = 11100 2 = .111 * 2 5 = .111 * 10 101

Pour déterminer la différence de commande, le processeur soustrait des nombres à la commandeUNordre des numérosBet obtient -2. Parce que ordre des numérosUN2 de moins que l'ordre du nombreB, ordre des numérosUNaugmente de 2 et la mantisse se décale de 2 bits vers la droite par rapport au point :

UN = .00101 * 10 101

Ajout de mantisses dans code modifié:

00| 0010 10…0 (numéroUN)

+ 00 | 1110 00…0 (nombreB)

01| 0000 10…0 (somme, commande = 1012 )

Une violation de la normalisation s'est produite.

Normalisation du résultat : la mantisse est décalée vers la droite, l'ordre augmente :UN + B = .100001* 10 110 = 100001 2 = 33.0

Lors de l'ajout et de la soustraction de nombres à virgule flottante, le débordement n'est pas capturé lors de l'ajout de mantisses. Un débordement peut survenir lors du processus de normalisation si la commande dépasse le maximum autorisé.

Multiplication et division

Lors de la multiplication de nombres au format virgule flottante, les ordres sont ajoutés et les mantisses sont multipliées, puis le résultat est normalisé.

Lors de la division, l'ordre du diviseur est soustrait de l'ordre du dividende, et la mantisse du dividende est divisée par la mantisse du diviseur, puis le résultat est normalisé.

Codage décimal binaire des informations

La décimale codée en binaire est une forme d'écriture d'entiers lorsquechaquela décimale d'un nombre s'écrit telle qu'ellecode binaire à quatre bits (au lieu de chaque chiffre décimal notez sa valeur binaire). Par exemple, le nombre décimal 310 s’écrirait code binaire comme 1001101102 , UNen code décimal binaireComment0011 0001 0000 BCD.

Avantages et inconvénients

Avantages

  • L'affichage des nombres a été simplifié : au lieu d'une division séquentielle par 10, il suffit d'afficher chaque quartet. De même, la saisie des données à l’aide du pavé numérique est plus simple.
  • Pour nombres fractionnaires(à la fois fixe et flottant) une fois traduit en langage lisible par l'homme format décimal et vice versa, la précision n'est pas perdue.
  • La multiplication et la division par 10 ainsi que les arrondis ont été simplifiés.

Pour ces raisons, le format décimal binaire est utilisé dans les calculatrices de la manière la plus simple. opérations arithmétiques devrait produire exactement le même résultat qu’une personne calculerait sur papier.

Défauts

  • Les opérations arithmétiques sont devenues plus compliquées.
  • Nécessite plus de mémoire.
  • Il existe des combinaisons de bits interdites dans le code BCD :

Combinaisons de bits interdites en BCD :

1010 1011 1100 1101 1110 1111


Les combinaisons illégales résultent généralement d'opérations d'addition, car BCD n'utilise que 10 combinaisons possibles 4 champ de bits au lieu de 16. Par conséquent, lors de l'ajout et de la soustraction de nombres au format BCD, suivre les règles:

  • Lors de l'ajout nombres décimaux binaires Chaque fois qu'un bit est transféré vers le quartet de poids fort, il est nécessaire d'ajouter la valeur de correction 0110 au quartet à partir duquel le transfert a eu lieu.
  • Lors de l'ajout de nombres binaires-décimaux, chaque fois qu'une combinaison invalide pour un quartet est rencontrée, il est nécessaire d'ajouter une valeur de correction 0110 à chaque combinaison invalide, permettant le transfert vers les quartets supérieurs.
  • Lors de la soustraction des nombres BCD, pour chaque quartet emprunté au quartet de poids fort, une correction doit être effectuée en soustrayant la valeur 0110.

Un exemple d'opération d'addition de nombres binaires-décimaux :

Requis: Trouvez le nombre A = D + C, où D = 3927, C = 4856

Solution: Représentons les nombres D et C sous forme décimale binaire : D = 3927 = 0011 1001 0010 0111 C = 4856 = 0100 1000 0101 0110

Additionnons les nombres D et C selon les règles de l'arithmétique binaire :


* **

0011 1001 0010 0111

+ 0100 1000 0101 0110

___________________

= 1000 0001 0111 1101 - Somme binaire

+ 0110 0110 - Correction

___________________

1000 0111 1000 0011

"*" tétrade à partir de laquelle le transfert a été effectué vers la tétrade la plus élevée

Tétrade "**" avec une combinaison de bits interdite

Dans la tétrade marquée du symbole *, on ajoute un six car, selon les règles de l'arithmétique binaire, le report en a enlevé 16, et selon les règles de l'arithmétique décimale, il aurait dû en emporter 10. Dans la tétrade marquée du symbole **, on ajoute un six, puisque la combinaison de bits est 1101 (ce qui correspond nombre décimal 13) est interdit.


Signe



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :