Notions de base de manipulation de bits pour la programmation de c

Une poignée d'opérateurs de programmation C fournir la manipulation des données au niveau binaire. Les opérateurs sont faciles à ignorer, mais seulement lorsque leur véritable puissance et l'utilité ne sont pas appréciés.

Le ~ et! opérateurs

Deux opérateurs binaires rares sont les ~ (ou complément à 1) et la! (ou non). Ils manquent le charme des opérateurs de bits logiques, mais ils ont une place.

L'opérateur du complément de l'une retourne tous les bits dans une valeur, en tournant dans un 1 et un 0 dans un 0 a 1. Par exemple:

~ = 10101100 01010011



La ! (PAS) opérateur affecte la valeur entière - tous les bits. Il modifie quelconque valeur différente de zéro à 0, et la valeur 0 à 1:

!01010011 00000000 =! = 00000001 00000000

Zéro et 1 sont les deux seuls résultats possibles lors de l'utilisation du bit! opérateur.

Tant le ~ et! opérateurs unaire opérateurs - il vous suffit de préfixer un valeur pour obtenir les résultats.

OpérateurNomTypeAction
ETBitwiseMasques de bits, la réinitialisation des bits à 0 et en laissant le restalone
|OUBitwiseDéfinit les bits, changer bits spécifiques 0-1
^XORBitwiseChange bits à 0 quand ils allumettes autrement, à 1
~Le complément à 1UnaireInverse tous les bits
~PASUnaireModifie des valeurs non nulles à 0- 0 valeurs, à 1
La binbin () fonction

Deux déclarations expliquent ce qui se passe dans la fonction binbin () pour faire convertir des valeurs dans une chaîne binaire:

bin [x] = n 0x80? '1': '0'-n lt; lt; = 1-

La première déclaration effectue un ET masque avec la valeur n. Tous, sauf le bit de gauche du nombre est jeté. Si ce bit est positionné, ce qui en fait une condition VRAI, le caractère 1 est stocké dans le array- contraire, le caractère 0 est stocké.

La valeur est exprimée en 0x80, qui est la notation hexadécimale, un type de raccourci pour binaire. La valeur hexadécimale 0x80 est égale à 10000000 binaire, qui est le ET masque. Si la valeur est de 16 bits au lieu de 8, 0x8000 est utilisé au lieu, ce qui crée un masque binaire de 16 bits.

La deuxième déclaration décale les bits de la valeur n d'un cran vers la gauche. Comme les tours de boucle, au travers de la valeur n, un autre bit de la valeur est déplacé vers la position la plus à gauche. Ce bit est évaluée, et la chaîne binaire est construit en insérant un caractère ou '1' '0'.


» » » » Notions de base de manipulation de bits pour la programmation de c