Qu'est-ce qu'un bitmask et un masque?
Sur le PHP la documentation sur JSON, il mentionne le mot masque de bits. Wikipédia est-il défini comme un masque. Je ne comprends pas, soit un masque ou masque ou de la façon dont ils sont utiles. Peut-on expliquer ces termes à l'aide de termes simples et sans jargon?
source d'informationauteur Robert Rocha
Vous devez vous connecter pour publier un commentaire.
De Bits et d'Octets
Dans le calcul, les chiffres en interne sont représentés en binaire. Cela signifie que, lorsque vous utilisez un type entier, pour une variable, ce sera fait en interne sera représenté comme une somme de zéros et de uns.
Comme vous le savez peut-être, un seul bit représente une
0
ou un1
. Un enchaînement de huit de ces bits représentent un Octet, par exemple00000101
qui est le numéro 5.Je présume que vous savez comment les nombres sont représentés en binaire, si non, prendre un coup d'oeil ici.
En PHP un nombre est (principalement) 4 Octets de long. Cela signifie que votre numéro de utilise 32 bits de la mémoire de stockage interne. Mais, par souci de simplicité, tout au long de cette réponse, je vais utiliser 8 bits.
Stockage des etats en bits
Maintenant, imaginez que vous souhaitez créer un programme qui est titulaire d'un etat, qui est basé sur plusieurs valeurs, un(
true
) ou zéro(false
). On pourrait stocker ces valeurs dans des variables différentes, ils peuvent être des booléens ou des entiers. Ou plutôt utiliser une seule variable de type entier et d'utiliser chaque bit de son système interne de 32 bits pour représenter les différents vraie et falses.Un exemple:
00000101
. Voici la le premier bit (lecture de droite à gauche) est vraie, ce qui représente la première variable. Le 2ème est false, ce qui représente la 2ème variable. La troisième vrai. Et ainsi de suite...C'est une très compact moyen de stocker des données et a de nombreux usages.
Bits De Masquage
C'est où le bit de masquage. Il semble complexe, mais en fait c'est très simple.
Bits de masquage permet d'utiliser les opérations que les travaux au niveau des bits.
Vous réellement appliquer une masque à une valeur, où, dans notre cas la valeur est notre état
00000101
et le masque est encore un nombre binaire en nombre, qui indique les bits d'intérêt.En effectuant des opérations binaires sur le masque et l'état, on pourrait atteindre les objectifs suivants:
Si nous voulons définir une valeur particulière à la vérité, nous pourrions le faire en utilisant l'opérateur OU à la suite de masque de bits:
Ou l'on pouvait sélectionner une valeur donnée de l'état à l'aide de l'opérateur ET:
Je vous suggère de prendre un certain regard plus profond en elle, et de se familiariser avec le jargon. Un bon départ peut être cette lien.
Goodluck!
C'est juste un nombre, comme représenté en binaire. Par exemple, disons que j'ai 8 valeurs booléennes (
true
oufalse
) que je veux stocker. J'ai pu l'enregistrer dans un tableau de 8 booléens, ou j'ai pu l'enregistrer dans un seul octet (8 bits), chacun de qui stockent l'un des booléens (0
=false
1
=true
).À ce point, je peux facilement manipuler mon octets afin que je puisse (1) définir un ensemble de bits à on ou off (vrai ou faux), et (2) vérifier si les bits sont on ou off.
mask = mask | (1 << bitIndex)
mask = mask & ~(1 << bitIndex)
(mask & (1 << bitIndex)) != 0
L'ensemble de ces opérations utilisent le décalage vers la gauche de l'opérateur, qui se déplace bits de la moins importante à la plus importante des postes de.
En essence, Masque de bits est une liste de booléens drapeaux (par exemple isAlive, isMoving, etc) compressés dans un seul champ, généralement un entier. Il peut couper tout à fait une quantité importante de la chaîne JSON de la taille ou de la mémoire.
Cela peut être important surtout en PHP où un booléen dans un tableau peut prendre la même quantité de RAM comme un entier. Il y a un très simple Masque guide qui vous expliquera étape par étape tout ce que vous devez savoir, y compris quand et comment l'utiliser.