Masquage

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Masque (informatique))
Sauter à la navigation Sauter à la recherche

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]