Poly 03
Poly 03
Poly 03
Les opérations
Jean-Christophe Dubacq
IUT de Villetaneuse
S1 2016
« Introduction à l’informatique »
Les opérations — A
Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 1 / 24 Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 4 / 24
Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 6 / 24 Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 7 / 24
Les opérations Les entiers Les opérations Les entiers
Par analogie avec les techniques maîtrisées en base 10, il est possible de faire également :
Méthode (Multiplication) É Des soustractions : lorsque le chiffre duquel on soustrait n’est pas suffisant, on ajoute 1 au chiffre à
soustraire dans la colonne d’ordre immédiatement supérieur, et en compensation, on ajoute la base
À l’instar de l’addition, la multiplication se fait comme pour les 1 1 0 dans la colonne courante.
nombres décimaux. Les tables sont justes différentes (il faut les × 1 0 1
écrire dans la bonne base !).
É Des divisions : en fait, on fait plein de multiplications enchaînées avec des soustractions.
1 1 0
En binaire, c’est très facile : on multiplie par 0 ou par 1, donc on se (+ 0 ) É Additionner un négatif, c’est soustraire un positif.
contente d’additionner des copies du multiplicande décalées là où le + 1 1 0 É Des opérations en virgule fixe : les règles de placement de la virgule sont les mêmes qu’en base 10.
multiplicateur a des 1. 1 1 1 1 0 É Des décalages qui sont des multiplications ou divisions par une puissance de la base.
Très important : décaler à gauche de n colonnes un nombre, c’est
le multiplier par Bn . Le décaler à droite, c’est le diviser par Bn . É Pour la virgule flottante, les multiplications sont simples ; les additions nécessitent de recoder en
virgule fixe.
« Introduction à l’informatique »
Les opérations — B
Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 8 / 24 Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 9 / 24
Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 10 / 24 Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 12 / 24
Les opérations Addition et codage Les opérations Addition et codage
« Introduction à l’informatique »
Les opérations — C
Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 13 / 24 Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 14 / 24
É Il est possible d’interpréter les deux valeurs binaires comme représentant respectivement vrai (1) ou
faux (0).
Limites de la multiplication É On peut définir des opérations correspondantes à la conjonction (et), la disjonction (ou) et la
Expliquez pourquoi le résultat d’une multiplication de deux nombres représentés dans l’un des 4 codes négation (opposé de).
classiques est toujours représentable à condition de doubler la taille du code.
Ce ne sont pas des opérations arithmétiques classiques.
Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 15 / 24 Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 17 / 24
Les opérations Les champs de bits Les opérations Les champs de bits
AND XOR
L’opérateur binaire AND, noté × b, renvoie 1 si et seulement si ses deux arguments sont égaux à 1. L’opérateur binaire XOR, noté ⊕ b, renvoie 1 si et seulement si ses deux arguments sont différents.
L’opérateur général AND renvoie 1 si et seulement si tous ses arguments sont égaux à 1. Ils sont équivalents à la fonction différent.
Ils sont équivalents à la fonction minimum.
NOT
OR L’opérateur unaire NOT, noté , renvoie 0 si et seulement si son argument est égal à 1.
L’opérateur binaire OR, noté + b, renvoie 0 si et seulement si ses deux arguments sont égaux à 0. Il est équivalent à la fonction complémentation.
L’opérateur général OR renvoie 0 si et seulement si tous ses arguments sont égaux à 0. Il y a aussi les opérateurs généraux NOR et NAND qui sont en fait NOT(OR(...)) et NOT(AND(...)). Ils sont
Ils sont équivalents à la fonction maximum. rarement implémentés dans les langages de programmation.
« Introduction à l’informatique »
Les opérations — D
Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 18 / 24 Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 19 / 24
Les opérations Les champs de bits Les opérations Les champs de bits
É La notion de variable booléenne stockant une valeur vraie ou faux est très souvent intégrée
directement dans les langages
Tables de vérité
Ce n’est pas le cas dans le langage C
Q11 Faites une table qui montre toutes les paires d’arguments possibles pour les opérateurs AND, OR,
XOR et qui montre le résultat à côté.
É On appelle parfois ces variables des flags (drapeaux).
É Quand on réunit plusieurs de ces variables dans une même entité, on appelle le résultat un champ
A B A×B A B A+B A B A⊕B de bits (anglais bit field).
0 0 0 0 0 0 É Ces champs de bits peuvent être stockés dans une seule variable (selon leur nombre). On les
0 1 0 1 0 1 considère comme un entier codé en NAT ou C2.
1 0 1 0 1 0 É On définit des opérations sur les champs de bits : le et bit-à-bit, le ou bit-à-bit, le not bit-à-bit et le xor
1 1 1 1 1 1 bit-à-bit.
Il s’agit de faire sur les bits de même position dans deux champs de bits (un pour la négation)
l’opération booléenne correspondante.
Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 20 / 24 Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 21 / 24
Les opérations Les champs de bits Les opérations Les champs de bits
Exercices Masquage
Lorsqu’un champ de bits est représenté par un entier, on peut accéder à un bit particulier en procédant à
un ET :
b = (B&(1 << )) >>
Opérations booléennes On obtient 1 si le bit numéro est à 1, 0 sinon.
On peut aussi mettre à 1 le bit numéro :
Q12 Que vaut 0b10000110 AND 0b11101001 ?
Q13 Que vaut 0b10000110 OR 0b11101001 ? B = B|(1 << )
Q14 Que vaut 0b10000110 XOR 0b11101001 ? ou à zéro :
Q15 Que se passe-t-il si on calcule ( est une variable booléenne) : + 0 ? + 1 ? × 0 ? × 1 ? B = B&(∼ (1 << ))
+ ? + + + + + ?
On peut aussi inverser le bit numéro :
Q16 Démontrez que + b = ;
Q17 Démontrez que + bc = ( + b)( + c) ; B = B ⊕ (1 << )
Q18 Démontrez que + b = + b ; On peut tester si par exemple le bit 1 ou 3 sont à 1 : if (a&0b1010 != 0) ...
L’ensemble de ces techniques pour manipuler un champ de bits sous la forme d’un entier est appelé
masquage.
« Introduction à l’informatique »
Souvent, les valeurs (1 << ) sont nommées pour qu’on puisse simplement utiliser leur nom au lieu de
se souvenir de leur position.
Les opérations — E
Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 22 / 24 Jean-Christophe Dubacq (IUTV) Introduction à l’informatique S1 2016 23 / 24
Exercices
Analyse de touches
Dans un système, la fonction keyEvent() renvoie une valeur entière sur 16 bits (dont 5 ignorés) :
É Les 8 premiers bits correspondent au numéro de la touche sur le clavier (pour les touches ordinaires)
É Le 9e bit correspond à la touche SHIFT (1 : pressée, 0 : pas pressée)
É Le 10e bit correspond à la touche CONTROL (1 : pressée, 0 : pas pressée)
É Le 11e bit correspond au fait d’appuyer sur une touche (1) ou de l’avoir juste relachée (0)
Q22 Écrivez un programme qui appelle cette fonction (a=keyEvent()) puis qui en fonction de a
affiche un texte du genre : « Vous venez de lâcher la touche 27 en ayant SHIFT appuyé et CONTROL
lâché »