Table des matières:
Vidéo: Langage C #14 - structures et types 2024
Une poignée d'opérateurs de programmation C fournissent des manipulations de données au niveau binaire. Les opérateurs sont faciles à ignorer, mais seulement lorsque leur véritable puissance et utilité ne sont pas appréciées.
Le ~ et! opérateurs
Deux opérateurs binaires peu fréquents sont le (ou le complément de 1) et le! (ou pas). Ils n'ont pas le charme des opérateurs logiques au niveau du bit, mais ils ont une place.
L'opérateur de complément de 1 retourne tous les bits dans une valeur, transformant un 1 en 0 et un 0 en 1. Par exemple:
~ 01010011 = 10101100
Le! L'opérateur (NOT) affecte la valeur entière - tous les bits. Il change n'importe quelle valeur non nulle à 0, et la valeur 0 à 1:
! 01010011 = 00000000! 00000000 = 00000001
Zéro et 1 sont les deux seuls résultats possibles lors de l'utilisation du bitwise! opérateur.
Les deux ~ et! les opérateurs sont des opérateurs unaires - vous préférez simplement une valeur pour obtenir les résultats.
Opérateur | Nom | Type | Action |
---|---|---|---|
& | ET | Bit à bit | Masque les bits, remet certains bits à 0 et laisse le reste
seul |
| | OR | Bitwise | Règle les bits en changeant les bits spécifiques de 0 à 1 |
^ | XOR | Bitwise | Change les bits à 0 lorsqu'ils correspondent; sinon, à 1 |
~ | 1 complément | Unaire | Inverse tous les bits |
~ | PAS | Unaire | Change les valeurs non nulles à 0; 0 valeurs, à 1 |
La fonction binbin () |
Deux instructions expliquent ce qui se passe dans la fonction binbin () pour convertir les valeurs en une chaîne binaire:
bin [x] = n & 0x80? 'dix'; n << = 1;
La première instruction exécute un masque AND avec la valeur n. Tout sauf le bit le plus à gauche dans le nombre est ignoré. Si ce bit est positionné, ce qui en fait une condition TRUE, le caractère 1 est stocké dans le tableau; sinon, le caractère 0 est stocké.
La valeur est exprimée en 0x80, qui est une notation hexadécimale, un type de raccourci pour binaire. La valeur hexadécimale 0x80 est égale à 10000000 binaire, qui est le masque AND. Si la valeur est 16 bits au lieu de 8, 0x8000 est utilisé à la place, ce qui crée un masque binaire 16 bits.
La deuxième instruction décale les bits de la valeur n d'un cran vers la gauche. Lorsque la boucle tourne, en passant par la valeur n, un autre bit de la valeur est décalé vers la position la plus à gauche. Ce bit est évalué et la chaîne binaire est construite en insérant un caractère '1' ou '0'.