Articles of bit shift

Les résultats Java diffèrent pour (int) Math.pow (2, x) et 1 << x

Pourquoi les deux opérations suivantes donnent-elles des résultats différents en Java pour x = 31 ou 32 mais les mêmes résultats pour x=3 ? int x=3; int b = (int) Math.pow(2,x); int c = 1<<x; Résultats: x=32: b=2147483647; c=1; x=31: b=2147483647; c=-2147483648; x=3: b=8 ; c=8

Comment l’utilisation >>> 1 empêche-t-elle les débordements lors de l’ajout de deux nombres plutôt que la division par 2?

J’ai vu à quelques endroits le code suivant recommandé d’append des nombres et de le diviser par 2, en particulier dans le contexte de la recherche d’un index intermédiaire dans un tableau à sortinger rapidement. int middle = ( low + high ) >>> 1; opposé à int middle = ( low + high ) […]

Opérateurs de décalage – les opérandes doivent être convertibles en une primitive entière?

Je me prépare à un examen Java et je lis le “Guide d’étude du programmeur OCA Java SE 8 (Examen 1Z0-808)”. Dans la section des opérateurs, j’ai trouvé cette phrase: Opérateurs de décalage: un opérateur de décalage prend deux opérandes dont le type doit être convertible en une primitive entière. Je me sentais étrange avec […]

Pourquoi (-1 >>> 32) = -1?

Dupliquer possible: pourquoi 1 >> 32 == 1? -1 en tant que int converti en binary est représenté par 32 1. Quand je le déplace à droite 31 fois, j’obtiens 1 (31 0 et un 1). Mais quand je le déplace à droite 32 fois, je reçois -1 à nouveau. Ne devrait-il pas être égal […]

Quel est le but de décaler la valeur int par zéro?

En regardant le code source de la classe java.nio.DirectByteBuffer, j’ai trouvé ceci: if ((length < Bits.JNI_COPY_TO_ARRAY_THRESHOLD) …. Quel est le but de décaler la longueur de zéro bits? Est-ce que cela peut être une optimisation de la performance ou autre chose?

Pourquoi Java `BitSet` n’a-t-il pas de fonctions` shiftLeft` et `shiftRight`?

Y a-t-il une raison particulière pour laquelle ils manquent? Ils existent dans BigInteger , mais en raison du modèle de conception immuable de BigInteger ils sont généralement extrêmement lents. BitSet est beaucoup plus BitSet car il est modifiable, mais les fonctions de shift ( << et >>> pendant long ) me manquent vraiment. Pour BitSet […]

Pourquoi -1 zéro remplissage à droite décalage 1 = 2147483647 pour les entiers en Java?

Pour le programme ci-dessous: public class ZeroFillRightShift { public static void main(Ssortingng args[]) { int x = -1; int y = x>>>1; System.out.println(“x = ” + x); System.out.println(“y = ” + y); } Je reçois la sortie comme suit: x = -1 y = 2147483647 Le résultat que j’ai pour -1>>>1 est 2147483647. Si c’est […]

Que fait >> en java?

D’accord, j’ai essayé de regarder ce que signifie >>, ou «shift», mais cela dépasse mon esprit, comme l’explique ce site: http://www.janeg.ca/scjp/oper/shift.html Alors, quelqu’un peut-il expliquer comme si ils parlent à un enfant?

Opérateur binary Java <<

Quelqu’un peut-il expliquer pourquoi les expressions de bits suivantes renvoient des résultats différents: System.out.println((-1<<31)<<1); // it prints 0 System.out.println(-1<<32); // it prints -1

Pourquoi avons-nous besoin d’utiliser des opérateurs de décalage en Java?

Quel est le but d’utiliser des opérateurs Shift plutôt que d’utiliser la division et la multiplication? Y a-t-il d’autres avantages à utiliser des opérateurs de quart? Où faut-il essayer d’utiliser l’opérateur de quart?