Maison > Java > javaDidacticiel > le corps du texte

Méthodes d'opération de décalage en Java (<<, >>, >>>)

怪我咯
Libérer: 2017-06-30 10:31:08
original
1909 Les gens l'ont consulté

L'éditeur ci-dessous vous proposera un article sur les méthodes d'opération de décalage Java<<, >>, >>> L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour jeter un œil.

<<, signé décalage à gauche, décale toute la valeur binaire de l'opérande vers la gauche d'un nombre spécifié de chiffres et remplit les bits faibles avec des 0.

int leftShift = 10;
System.out.println("十进制:" + leftShift + ", 二进制:" + Integer.toBinaryString(leftShift));
int newLeftShift = letfShift << 2;
System.out.println("左移2位后十进制:" + newLeftShift + ", 左移2位后二进制" + Integer.toBinaryString(newLeftShift)); //正整数x左移n位后的十进制结果,x = x * 2^n
Copier après la connexion

Les chiffres ci-dessus sont des entiers positifs, et les résultats de l'opération sont les suivants.

Ensuite, regardons ce qui se passe lorsqu'un nombre négatif est décalé de 2 bits. Le résultat de l'opération est le suivant.

Pourquoi le binaire -10 en a-t-il autant ? Si vous comptez bien, il y a exactement 32 bits. La première chose que vous devez comprendre est que les nombres négatifs Java sont stockés sous forme de complément à deux (complément = complément + 1). Le nombre binaire de 10 est 1010 et son complément est 0101. L'ajout de 1 est le complément 0110. Alors pourquoi y a-t-il autant de 1 supplémentaires ? En effet, le type int occupe 8 octets en Java, soit exactement 32 bits. Les bits de poids fort du code original de 10 sont tous 0, et le bit de poids fort de son code complémentaire devient naturellement 1. Par conséquent, toute l'opération est décalée vers la gauche de 2 bits et les bits faibles sont remplis de 0. Le résultat final de l'opération est x = (|x| + 2^n).

>>, signé décalage à droite, décale la valeur binaire globale de l'opérande vers la droite d'un nombre spécifié de chiffres, complète les bits de poids fort des entiers avec 0 et complète les bits de poids fort des nombres négatifs avec 1 (en gardant le signe des nombres négatifs inchangé).


int rightShift = 10;
System.out.println("十进制:" + rightShift + ", 二进制:" + Integer.toBinaryString(rightShift));
int newRightShift = rightShift >> 2;
System.out.println("右移2位后十进制:" + newRightShift + ", 右移2位后二进制" + Integer.toBinaryString(newRightShift));  //右移n位后的运算数x十进制结果,x = x / 2
Copier après la connexion


Les résultats ci-dessus sont des entiers positifs, et les résultats de l'opération sont les suivants.

Ensuite, regardons ce qui se passe lorsqu'un nombre négatif est décalé de 2 bits vers la droite. Le résultat de l'opération est le suivant.

Le principe de base du décalage à droite signé des nombres négatifs est toujours le même que celui du décalage à gauche. La différence est le calcul du résultat, car il s'agit d'un décalage à droite signé, et le dernier est toujours décalé vers la droite. Le résultat sera -1. Pour résumer, si l'opérande est un nombre pair, alors le résultat de son opération est x = -(|x| / 2). Si l'opérande est un nombre impair, alors le résultat de son opération est x = -(|x| / 2). ) - 1.

>>>, décalage à droite non signé, qu'ils soient positifs ou négatifs, les bits hauts sont remplis avec 0 (le bit de signe est ignoré)

Regardez d'abord les nombres positifs, les nombres positifs >>>Le décalage à droite non signé et le décalage à droite signé ont les mêmes résultats de calcul

int rightShift = 10;
System.out.println("十进制:" + rightShift + ", 二进制:" + Integer.toBinaryString(rightShift));
int newRightShift = rightShift >>> 2;
System.out.println("右移2位后十进制:" + newRightShift + ", 右移2位后二进制" + Integer.toBinaryString(newRightShift));  //右移n位后的云算数x十进制结果,x = x / 2
Copier après la connexion

Les résultats ci-dessus sont des entiers positifs et les résultats de l'opération sont les suivants.

Ensuite, regardons les entiers négatifs. Les résultats de l’opération sont les suivants.

Bien que le binaire après décalage non signé et le binaire après décalage signé se ressemblent, les résultats sont assez différents. Rappelez-vous l'opération de décalage à droite signée, en fait, ce qui précède est un. opération arithmétique qui ignore les signes, c'est-à-dire que les bits hauts sont uniformément remplis de 0.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal