Masquage
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.
![](http://178.128.105.246/cars-http-upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Binary_mask_ro.png/220px-Binary_mask_ro.png)
Application d'un masque sur une donnée
modifierLa 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
modifierLe 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
modifierEn 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
modifierEnfin, l'application du masque consiste à poser l'équation mathématique correspondant à l'application du masque sur la donnée.
Exemple
modifierDans 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
modifierEn 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;