Déplacement arithmétique et décalage logique en C

Déplacement arithmétique et décalage logique en C
Des techniques de manipulation de bits, telles que le décalage logique et le décalage arithmétique, sont utilisés pour modifier les bits. Un changement logique gauche en position se déplace chaque bit vers la gauche à travers un. Son bit le plus important est supprimé, et le bit le moins pertinent est remplacé par 0. Un changement logique à droite une position passe à chaque petit peu à la droite. Le bit le moins important est supprimé et l'opérande est restauré par 0.

Un décalage arithmétique gauche en position transfère chaque bit vers la gauche par un seul. C'est la même chose que le changement logique gauche. Un décalage arithmétique à droite en position se déplace chaque bit à droite à travers un. Lors de la multiplication ou de la division d'un nombre entier, des fonctions de décalage arithmétique peuvent être utilisées. La multiplication d'un nombre par 2n, dans laquelle N représente le nombre d'emplacements de bits échangés, est le résultat d'une méthode de décalage gauche. Diviser un nombre par 2n est le résultat d'une méthode de décalage droit, où N représente le nombre d'emplacements de bits commutés.

Cet article démontrera certaines techniques en utilisant des fonctions de décalage bitwise en C.

Déplacer l'entier vers la gauche en utilisant le << Operator

Chaque langue comprend des techniques de changement de bit, qui déplacent chaque bit d'un nombre spécifié par le nombre requis d'emplacements. Pour évaluer correctement l'impact de ces méthodes, nous introduisons la fonction binaire dans la situation précédente, qui affiche la forme binaire du numéro fourni.

Cette méthode n'est conçue que pour fonctionner avec des chiffres 32 bits. Le code suivant illustre un décalage à quatre gauche et présente les valeurs numériques correspondantes:

#inclure
#inclure
vide binaire (num non signé)

non signé J;
pour (j = 1 < 0; j /= 4)
(num & j) ? printf ("1"): printf ("0");

int main (int argc, char * argv [])
int num1 = 456;
binaire (num1); printf (":% d \ n", num1);
num1 <<= 4;
binaire (num1); printf (":% d \ n", num1);
exit (exit_success);

Tout d'abord, nous introduisons deux bibliothèques et . À l'étape suivante, nous définissons la fonction binaire (). En attendant, nous déclarons un paramètre «Num non signé» à la fonction binaire (). Nous utilisons une boucle pour. Ici, nous initialisons une variable à l'intérieur de la boucle. La boucle itera jusqu'à ce que la valeur atteigne 31. Maintenant, nous utilisons la fonction principale () en dehors du corps de la fonction binaire (). Une variable ayant un type de données entier est initialisée. De même, nous créons un constructeur avec un type de données de caractère.

Nous déclarons une variable «num1» et spécifions sa valeur. Ensuite, cette valeur est fournie comme argument à la fonction binaire (). La fonction printf () est utilisée pour montrer la valeur binaire du numéro défini. Le << operator is applied to the value of the variable “num1”. Therefore, it is used to adjust the digits to the left. Now, the binary() and print() methods are utilized to print the result after shifting the numbers.

Utilisez le décalage gauche pour multiplier un nombre avec quatre:

Nous utiliserons le changement de gauche << more effective operation to accomplish the multiplication by four. It's important to note that there is no distinction between the logical and arithmetic shifts while moving left.

Un décalage de position spécifique conduit à la multiplication; Par conséquent, nous pouvons nous déplacer n'importe où pour acquérir la multiplication appropriée.

#inclure
#inclure
vide binaire (num non signé)

non signé K;
pour (k = 1 << 31; k > 0; k / = 4)
(num & k) ? printf ("1"): printf ("0");

int main (int argc, char * argv [])
int num1 = 678;
printf ("% d \ n", num1);
num1 <<= 1;
printf ("% d x 4 \ n", num1);
exit (exit_success);

Au début du programme, deux fichiers d'en-tête et sont inclus juste avant la déclaration de la méthode binaire (). À l'intérieur de la fonction binaire () pour la boucle est utilisée, la variable «k» est initialisée ici. La fonction printf () est également utilisée pour imprimer la valeur sous la forme de 1 et 0s. De plus, nous définissons la fonction principale (). Cette fonction contient deux paramètres, y compris une variable et un constructeur. Le type de données de cette variable et du constructeur n'est pas identique.

De plus, nous créons une autre variable et définissons la valeur de cette variable. Nous appliquons une fonction print () pour démontrer la valeur binaire réelle du numéro donné. Dans l'étape suivante, nous utilisons le << operator to move the digits to the left of the defined value. Once again, the printf() method gets the output after shifting the digits and multiplying the value by 4. In this way, we have to end the code.

Déplacez les entiers vers la droite, utilisez l'opérateur >>

Il convient de mentionner que les nombres signés et non signés sont exprimés différemment. Les signés, en particulier, sont interprétés comme deux entiers complémentaires. Par conséquent, le type de valeur négatif le plus répandu est 1, qui est appelé bit signé, tandis que les nombres positifs commencent par 0. En conséquence, si nous transférons analytiquement les chiffres négatifs à droite, nous supprimons le signe et obtenons le nombre positif. 2
Ainsi, nous devons faire la distinction entre les décalages logiques et arithmétiques, le premier conservant son bit le plus important. Ici, nous avons effectué le décalage arithmétique et conservé la valeur négative du nombre, comme démontré dans l'exemple suivant Résultat:

#inclure
#inclure
vide binaire (num non signé)

non signé l;
pour (l = 1> = 5;
binaire (num2); printf (":% d \ n", num2);
exit (exit_success);

Ici, nous devons intégrer les bibliothèques requises et . La fonction binaire () est appelée à l'étape suivante. De plus, nous introduisons un argument «Num non signé» dans cette méthode binaire (). Nous avons utilisé pour Loop, et à l'intérieur pour Loop, nous devons définir une variable. Nous avons utilisé la fonction principale () en dehors du corps de la fonction binaire (). Nous fabriquons un constructeur avec un type de données de caractère et déclarons une variable avec un type de données entier.

De plus, une variable appelée «num1» est initialisée et allouée à la valeur. Cette valeur est ensuite transmise à la méthode binaire () en tant que paramètre. La fonction printf () affiche la valeur binaire d'un numéro donné. L'opérateur >> est utilisé pour déplacer les chiffres à droite en l'appliquant à la valeur de la variable «num1». Depuis le déplacement des chiffres, les fonctions binaires () et printf () ont été appliquées pour imprimer le résultat. Ensuite, la méthode Exit () est utilisée pour mettre fin au programme.

Conclusion

Nous avons discuté des spécificités de l'arithmétique et du décalage logique dans la langue C. Nous avons observé comment déplacer les entiers vers la droite à l'aide de l'opérateur >> et vers la gauche en utilisant le << operator. Here, we also use the left shift to multiply a number.