Masquage

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche
Page d'aide sur l'homonymie Pour les articles homonymes, voir Masque (homonymie).

Le masquage est une opération de logique combinatoire utilisée en informatique et en électronique pour sélectionner dans un groupe de bits un sous-ensemble de bits à conserver, les autres étant forcés à une valeur choisie. L'opération de masquage est réalisée à l'aide d'opérations bit à bit pour agir sur la donnée initiale sans avoir à traiter indépendamment chacun de ses bits.

Application d'un masque sur une donnée[modifier | modifier le code]

La réalisation de l'opération de masquage se fait en plusieurs temps : le choix de l'opérateur, la construction du masque et son application.

Choix de l'opérateur[modifier | modifier le code]

Le choix de l'opérateur à utiliser pour appliquer le masque sur la donnée dépend de l'opération à réaliser. Pour cela, on se base sur les particularités des opérateurs logiques. En effet, dans une opération booléenne à deux opérandes, si l'on fixe l'une des deux à une valeur définie, on obtient un résultat ne dépendant que de la donnée.

Par exemple, pour un bit X, si l'on effectue une opération à l'aide de la fonction ET (notée « . »), on obtient :

X . 0 = 0
X . 1 = X

Ainsi, l'opération ET permet soit de conserver la valeur de la donnée en utilisant pour constante la valeur 1, soit de la forcer à 0 en utilisant la valeur 0.

À l'inverse, l'opération OU (notée « + ») permet de forcer la valeur à 1 :

X + 0 = X
X + 1 = 1

Construction du masque[modifier | modifier le code]

En se basant sur les particularités des opérateurs vus précédemment, on construit un masque de même taille que la donnée, et comportant des 0 ou des 1 pour chaque bit respectif en fonction de l'opération que l'on veut lui faire subir.

Par exemple, si l'objectif est de sélectionner un ensemble de bits à conserver dans un mot et de forcer les autres à zéro, l'opération à utiliser est le ET. Le masque doit alors comporter des 1 à la même position que les bits à conserver, et des zéro ailleurs. Pour un forçage à 1, on utilisera l'opérateur OU et on construira le masque inverse, c'est-à-dire comportant des 0 sur les bits à conserver et des 1 sur les bits à écraser.

Application du masque[modifier | modifier le code]

Enfin, l'application du masque consiste à poser l'équation mathématique correspondant à l'application du masque sur la donnée.

Exemple[modifier | modifier le code]

Dans l'exemple suivant, on désire conserver les deux bits de poids faible et forcer la valeur des autres à zéro dans un mot de 8 bits. On choisit donc l'opérateur ET. Puis on construit un masque comportant des 1 à la même position que les bits à conserver et des zéro ailleurs :

0000 0011 (Soit 0x03 en notation hexadécimale)

Ainsi, si la donnée est la suivante :

0110 1010 (= 0x6A)

L'application du calcul donnera :

  0110 1010
. 0000 0011
-----------
  0000 0010

On a donc bien conservé la valeur des deux derniers bits tout en forçant la valeur des autres à 0.

Si on souhaitait au contraire forcer les bits à la valeur 1, on utiliserait donc l'opérateur OU, et le masque inverse :

1111 1100 (= 0xFC)

L'application du calcul sera alors :

  0110 1010
+ 1111 1100
-----------
  1111 1110

Mise en œuvre logicielle[modifier | modifier le code]

En informatique, on utilisera un langage de programmation pour appliquer le calcul. En reprenant le premier exemple ci-dessus, on obtient en langage C le code suivant sachant que l'opérateur ET s'écrit sous la forme « & » :

unsigned int donnee = 0x6A;
unsigned int resultat = donnee & 0x03;

Pour le second exemple, on utilise l'opérateur OU, qui s'écrit « | » :

unsigned int donnee = 0x6A;
unsigned int resultat = donnee | 0xFC;

Articles liés[modifier | modifier le code]