Maison  >  Article  >  interface Web  >  Programme JavaScript pour vérifier si un nombre donné est une puissance de 2

Programme JavaScript pour vérifier si un nombre donné est une puissance de 2

王林
王林avant
2023-09-07 19:13:021206parcourir

JavaScript 程序检查给定数字是否是 2 的幂

Si un nombre donné est généré en multipliant seulement 2, alors le nombre est une puissance de 2. Dans ce tutoriel, nous allons apprendre à vérifier si un nombre donné est une puissance de 2. Ici, nous examinerons 5 façons différentes de vérifier si un nombre donné est une puissance de 2.

Utilisez la méthode Math.pow()

En JavaScript, les nombres peuvent contenir jusqu'à 64 bits. Par conséquent, nous pouvons utiliser une boucle for et la méthode Math.pow() pour trouver 2 élevé à la puissance 1 à 64. Pour la boucle, on peut comparer 2 élevé à la ième puissance avec un nombre. S'il correspond à un nombre, nous renvoyons vrai ; sinon, nous renvoyons faux à la fin de la boucle.

Grammaire

Les utilisateurs peuvent utiliser la boucle for et la méthode Math.pow() selon la syntaxe ci-dessous pour vérifier si le nombre est divisible par 2.

for () {
   if (Math.pow(2, i) == num) {
      return true;
   }
}        

Algorithme

  • Étape 1 - Utilisez une boucle for et parcourez les nombres i=1 à i=64.

  • Étape 2 - Dans la boucle for, utilisez la méthode Math.pow() pour élever 2 à la puissance i.

  • Étape 3 - Comparez 2 élevés à la puissance i avec le nombre. S'il y a une correspondance, renvoie vrai.

  • Étape 4 - Si la boucle for se termine sans renvoyer vrai, renvoyez faux.

Exemple 1

Dans l'exemple ci-dessous, nous utilisons la méthode ci-dessus pour vérifier si un nombre donné est une puissance de 2. Dans le résultat, l'utilisateur peut observer que la fonction checkPowOf2() renvoie vrai ou faux selon que le nombre est une puissance ou non.

<html>
<body>
   <h3> Using the <i> Math.pow() method </i> to check whether the given number is a power of 2 or not </h3>
   <div id="output"> </div>
   <script>
      let output = document.getElementById('output');
      let num1 = 342434535;
      let num2 = 2048;
      function checkPowOf2(num) {
         for (let i = 0; i < 64; i++) {
            if (Math.pow(2, i) == num) {
               return true;
            }
         }
         return false;
      }
      output.innerHTML += "The " + num1 + " is a power of 2 :- " + checkPowOf2(num1) + " <br> ";
      output.innerHTML += "The " + num2 + " is a power of 2 :- " + checkPowOf2(num2) + " <br> ";
   </script>
</body>
</html>

Utilisez la méthode Math.log()

On peut prendre le logarithme d'un nombre en base 2. Si le nombre est un entier, c'est une puissance de 2.

Grammaire

Les utilisateurs peuvent utiliser la méthode Math.log() selon la syntaxe ci-dessous pour vérifier si le nombre est une puissance de 2.

let log = Math.log(number) / Math.log(2);
let isInteger = parseInt(log) == log;

Exemple 2

Dans l'exemple ci-dessous, nous prenons d'abord le logarithme base 2 du nombre, puis utilisons la méthode parseInt() pour extraire l'entier du logarithme. S'il compare avec le logarithme, la fonction renvoie vrai.

<html>
<body>
   <h3> Using the <i> Math.log() method </i> to check whether the given number is a power of 2 or not </h3>
   <div id="output"> </div>
   <script>
      let output = document.getElementById('output');
      let number1 = 1024;
      let number2 = 3454;
      function checkPowOf2(number) {
      
         // get a log of the number on base 2
         let log = Math.log(number) / Math.log(2);
         
         // If the log is an integer, return true.
         if (parseInt(log) == log) {
            return true;
         }
         return false;
      }
      output.innerHTML += "The " + number1 + " is a power of 2 :- " + checkPowOf2(number1) + " <br> ";
      output.innerHTML += "The " + number2 + " is a power of 2 :- " + checkPowOf2(number2) + " <br> ";
   </script>
</body>
</html>

Déterminé en comptant l'ensemble de bits

Si le nombre est une puissance de 2, il ne contient qu'un seul bit défini. Ainsi, nous pouvons vérifier chaque chiffre du nombre un par un. Si nous obtenons le premier bit défini, nous définissons isSetBit sur true. Après, si on remet le bit, on peut dire que le nombre n'est pas une puissance de 2.

Grammaire

Les utilisateurs peuvent suivre la syntaxe ci-dessous pour déterminer si le nombre est une puissance de 2 en calculant le nombre de chiffres définis.

while (number) { 
   if (isSetBit) { 
      return false;
   } 
   else if (number & 1 == 1) { 
      isSetBit = true; 
   } 
   number = number >> 1; 
}

Algorithme

  • Étape 1 - Utilisez une boucle while pour itérer lorsque le nombre n'est pas égal à 0.

  • Étape 2 - Vérifiez si la valeur de la variable "isSetBit" est vraie ; renvoie une erreur.

  • Étape 3 - Si la valeur de la variable isSetBit est fausse et que le bit actuel est un bit défini, modifiez la valeur de la variable isSetBit en vrai.

  • Étape 4 - Déplacez le numéro vers la droite de 1.

Exemple 3

Dans l'exemple ci-dessous, nous utilisons une boucle while pour parcourir les nombres et vérifier chaque chiffre du nombre. Si nous obtenons le deuxième bit défini dans le nombre, nous renverrons false.

<html>
<body>
   <h3> Counting the <i> set bits </i> to check whether the given number is a power of 2 or not </h3>
   <div id="output"> </div>
   <script>
      let output = document.getElementById('output');
      let number1 = 2048 * 2 * 2 * 2;
      let number2 = 87907;
      function checkPowOf2(number) {
         let isSetBit = false;
         if (number) {
            while (number) {
               if (isSetBit) {
                  return false;
               } else if (number & 1 == 1) {
                  isSetBit = true;
               }
               number = number >> 1;
            }
            return true;
         }
         return false;
      }
      output.innerHTML += "The " + number1 + " is a power of 2 :- " + checkPowOf2(number1) + " <br> ";
      output.innerHTML += "The " + number2 + " is a power of 2 :- " + checkPowOf2(number2) + " <br> ";
   </script>
</body>
</html>

Utilisez l'opérateur « & »

Si le nombre est une puissance de 2, le bit le plus à gauche ne contient que 1. Si l’on soustrait 1 à une puissance de 2, le bit le plus à gauche du nombre contient 0 et les autres bits contiennent 1. Donc si nous effectuons l'opération "&" entre n et n-1, elle retournera toujours zéro pour tous les nombres égaux à la puissance 2.

Grammaire

Les utilisateurs peuvent utiliser l'opérateur « & » selon la syntaxe ci-dessous pour vérifier si le nombre donné est une puissance de 2.

let isPowerOf2 = number && !(number & number - 1)

Exemple 4

Dans l'exemple ci-dessous, nous vérifions d'abord si le nombre dans l'instruction if n'est pas zéro. On vérifie ensuite si "n & n-1" est égal à 0 pour voir si le nombre est une puissance de 2.

<html>
<body>
   <h3> Using the <i> & operator </i> to check whether the given number is a power of 2 or not </h3>
   <div id="output"> </div>
   <script>
      let output = document.getElementById('output');
      let number1 = 1024 * 2 * 2 * 2;
      let number2 = 409540;
      function checkPowOf2(number) {
         if (number && !(number & number - 1)) {
            return true;
         }
         return false;
      }
      output.innerHTML += "The " + number1 + " is a power of 2 :- " + checkPowOf2(number1) + " <br> ";
      output.innerHTML += "The " + number2 + " is a power of 2 :- " + checkPowOf2(number2) + " <br> ";
   </script>
</body>
</html>

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer