Maison > interface Web > js tutoriel > le corps du texte

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

王林
Libérer: 2023-09-07 19:13:02
avant
1254 Les gens l'ont consulté

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;
   }
}        
Copier après la connexion

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>
Copier après la connexion

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;
Copier après la connexion

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>
Copier après la connexion

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; 
}
Copier après la connexion

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>
Copier après la connexion

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)
Copier après la connexion

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>
Copier après la connexion

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!

source:tutorialspoint.com
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