Il s'agit d'une fonction bien connue pour calculer la puissance la plus proche suivante de deux pour les arguments positifs. Cependant, je n'ai pas beaucoup d'expérience pour triturer la logique/théorie derrière cela. Voulez-vous expliquer pourquoi et comment cela fonctionne? En particulier, le choix de 1,2,4,8,16 pour le déplacement et si la gamme de l'argument était plus grande ce qui serait utilisé, par exemple, pour un long? Pourquoi le décalage logique au lieu de l'arithmétique et, finalement, qu'est-ce que l'argument décalé ORing accomplit?Explication pour le calcul de la puissance la plus proche de deux supérieure à l'argument en utilisant le bit twiddling
static int lowestPowerOfTwoGreaterThan(int arg) {
arg |= (arg >>> 1);
arg |= (arg >>> 2);
arg |= (arg >>> 4);
arg |= (arg >>> 8);
arg |= (arg >>> 16);
return ++arg;
}
Vous pourriez choisir quelques petits nombres aléatoires. Écrivez-le en binaire ... Faites le calcul vous-même ... –
Merci, j'ai fait mais je ne pouvais pas voir le motif pourquoi cela généralise. Au fait, je souhaite que tu n'aies pas changé le titre. Ce n'est pas demander un moyen de le calculer, mais comment la fonction fonctionne. Aussi pas de masquage ici. –
N'hésitez pas à [modifier] votre question pour corriger les erreurs que j'ai faites –