Heim  >  Artikel  >  Web-Frontend  >  JavaScript-Programm zum Überprüfen, ob eine bestimmte Zahl eine Potenz von 2 ist

JavaScript-Programm zum Überprüfen, ob eine bestimmte Zahl eine Potenz von 2 ist

王林
王林nach vorne
2023-09-07 19:13:021248Durchsuche

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

Wenn eine gegebene Zahl nur durch Multiplikation mit 2 entsteht, dann ist die Zahl eine Potenz von 2. In diesem Tutorial lernen wir, zu überprüfen, ob eine bestimmte Zahl eine Potenz von 2 ist. Hier sehen wir uns 5 verschiedene Möglichkeiten an, um zu überprüfen, ob eine bestimmte Zahl eine Potenz von 2 ist.

Verwenden Sie die Math.pow()-Methode

In JavaScript können Zahlen bis zu 64 Bit enthalten. Daher können wir eine for-Schleife und die Methode Math.pow() verwenden, um 2 hoch 1 bis 64 zu finden. Mit der For-Schleife können wir die i-te Potenz von 2 mit einer Zahl vergleichen. Wenn es mit einer Zahl übereinstimmt, geben wir „true“ zurück; andernfalls geben wir „false“ zurück, wenn die Schleife endet.

Grammatik

Benutzer können die for-Schleife und die Math.pow()-Methode gemäß der folgenden Syntax verwenden, um zu prüfen, ob die Zahl durch 2 teilbar ist.

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

Algorithmus

  • Schritt 1 – Verwenden Sie eine for-Schleife und iterieren Sie über die Zahlen i=1 bis i=64.

  • Schritt 2 – Verwenden Sie in der for-Schleife die Methode Math.pow(), um 2 auf die i-Potenz zu erhöhen.

  • Schritt 3 – Vergleichen Sie 2 hoch i mit der Zahl. Wenn es eine Übereinstimmung gibt, wird „true“ zurückgegeben.

  • Schritt 4 – Wenn die for-Schleife beendet wird, ohne „true“ zurückzugeben, geben Sie „false“ zurück.

Beispiel 1

Im folgenden Beispiel verwenden wir die obige Methode, um zu überprüfen, ob eine bestimmte Zahl eine Potenz von 2 ist. In der Ausgabe kann der Benutzer beobachten, dass die Funktion checkPowOf2() wahr oder falsch zurückgibt, je nachdem, ob die Zahl eine Potenz ist oder nicht.

<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>

Verwenden Sie die Math.log()-Methode

Wir können den Logarithmus einer Zahl zur Basis 2 berechnen. Wenn die Zahl eine ganze Zahl ist, handelt es sich um eine Potenz von 2.

Grammatik

Benutzer können die Methode Math.log() gemäß der folgenden Syntax verwenden, um zu überprüfen, ob die Zahl eine Potenz von 2 ist.

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

Beispiel 2

Im folgenden Beispiel nehmen wir zuerst den Logarithmus zur Basis 2 der Zahl und extrahieren dann mit der Methode parseInt() die ganze Zahl aus dem Logarithmus. Beim Vergleich mit dem Logarithmus gibt die Funktion „true“ zurück.

<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>

Ermittelt durch Zählen der gesetzten Bits

Wenn die Zahl eine Potenz von 2 ist, enthält sie nur ein gesetztes Bit. So können wir jede Ziffer der Zahl einzeln überprüfen. Wenn wir das erste gesetzte Bit erhalten, setzen wir isSetBit auf true. Wenn wir das Bit anschließend erneut setzen, können wir sagen, dass die Zahl keine Potenz von 2 ist.

Grammatik

Benutzer können der folgenden Syntax folgen, um durch Berechnung der Anzahl der eingestellten Ziffern festzustellen, ob die Zahl eine Potenz von 2 ist.

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

Algorithmus

  • Schritt 1 – Verwenden Sie eine While-Schleife, um zu iterieren, wenn die Zahl ungleich 0 ist.

  • Schritt 2 – Überprüfen Sie, ob der Wert der Variable „isSetBit“ wahr ist; geben Sie einen Fehler zurück.

  • Schritt 3 – Wenn der Wert der Variablen isSetBit falsch ist und das aktuelle Bit ein gesetztes Bit ist, ändern Sie den Wert der Variablen isSetBit in true.

  • Schritt 4 – Verschieben Sie die Zahl um 1 nach rechts.

Beispiel 3

Im folgenden Beispiel verwenden wir eine While-Schleife, um die Zahlen zu durchlaufen und jede Ziffer der Zahl zu überprüfen. Wenn wir das zweite gesetzte Bit in der Zahl erhalten, geben wir false zurück.

<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>

Verwenden Sie den „&“-Operator

Wenn die Zahl eine Potenz von 2 ist, enthält das Bit ganz links nur 1. Wenn wir 1 von einer Potenz von 2 subtrahieren, enthält das Bit ganz links der Zahl 0 und die anderen Bits enthalten 1. Wenn wir also die Operation „&“ zwischen n und n-1 durchführen, wird für alle Zahlen, die der Potenz von 2 entsprechen, immer Null zurückgegeben.

Grammatik

Benutzer können den Operator „&“ gemäß der folgenden Syntax verwenden, um zu überprüfen, ob die angegebene Zahl eine Potenz von 2 ist.

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

Beispiel 4

Im folgenden Beispiel prüfen wir zunächst, ob die Zahl in der if-Anweisung nicht Null ist. Anschließend prüfen wir, ob „n & n-1“ gleich 0 ist, um zu sehen, ob die Zahl eine Potenz von 2 ist.

<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>

Das obige ist der detaillierte Inhalt vonJavaScript-Programm zum Überprüfen, ob eine bestimmte Zahl eine Potenz von 2 ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen