Rumah > Artikel > hujung hadapan web > Program JavaScript untuk menyemak sama ada nombor yang diberikan ialah kuasa 2
Jika nombor yang diberikan dijana dengan hanya mendarab 2, maka nombor itu adalah kuasa 2. Dalam tutorial ini, kita akan belajar untuk menyemak sama ada nombor yang diberikan ialah kuasa 2. Di sini kita akan melihat 5 cara berbeza untuk menyemak sama ada nombor yang diberikan ialah kuasa 2.
Dalam JavaScript, nombor boleh mengandungi sehingga 64 bit. Oleh itu, kita boleh menggunakan gelung for dan kaedah Math.pow() untuk mencari 2 dinaikkan kepada kuasa 1 hingga 64. Untuk gelung, kita boleh membandingkan 2 yang dinaikkan kepada kuasa ke dengan nombor. Jika ia sepadan dengan nombor, kami mengembalikan benar jika tidak, kami mengembalikan palsu apabila gelung ditamatkan.
Pengguna boleh menggunakan kaedah gelung for dan Math.pow() mengikut sintaks di bawah untuk menyemak sama ada nombor itu boleh dibahagi dengan 2.
for () { if (Math.pow(2, i) == num) { return true; } }
Langkah 1 - Gunakan gelung for dan ulangi nombor i=1 hingga i=64.
Langkah 2 - Dalam gelung for, gunakan kaedah Math.pow() untuk menaikkan 2 kepada kuasa i.
Langkah 3 - Bandingkan 2 yang dinaikkan kepada kuasa i dengan nombor. Jika ada padanan, kembali benar.
Langkah 4 - Jika gelung for ditamatkan tanpa mengembalikan benar, kembalikan palsu.
Dalam contoh di bawah, kami menggunakan kaedah di atas untuk menyemak sama ada nombor yang diberikan ialah kuasa 2. Dalam output, pengguna boleh melihat bahawa fungsi checkPowOf2() mengembalikan benar atau salah berdasarkan sama ada nombor itu kuasa atau tidak.
<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>
Kita boleh mengambil logaritma nombor asas 2. Jika nombor itu adalah integer, ia adalah kuasa 2.
Pengguna boleh menggunakan kaedah Math.log() mengikut sintaks di bawah untuk menyemak sama ada nombor itu kuasa 2.
let log = Math.log(number) / Math.log(2); let isInteger = parseInt(log) == log;
Dalam contoh di bawah, kita mula-mula mengambil logaritma asas 2 nombor, dan kemudian menggunakan kaedah parseInt() untuk mengekstrak integer daripada logaritma Jika ia dibandingkan dengan logaritma, fungsi itu kembali benar.
<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>
Jika nombor adalah kuasa 2, ia hanya mengandungi satu set bit. Jadi, kita boleh semak setiap digit nombor satu persatu. Jika kita mendapat bit set pertama, kita tetapkan isSetBit kepada benar. Selepas itu, jika kita menetapkan bit sekali lagi, kita boleh mengatakan bahawa nombor itu bukan kuasa 2.
Pengguna boleh mengikut sintaks di bawah untuk menentukan sama ada nombor itu adalah kuasa 2 dengan mengira bilangan digit yang ditetapkan.
while (number) { if (isSetBit) { return false; } else if (number & 1 == 1) { isSetBit = true; } number = number >> 1; }
Langkah 1 - Gunakan gelung sementara untuk lelaran apabila nombor itu tidak sama dengan 0.
Langkah 2 - Semak sama ada nilai pembolehubah "isSetBit" adalah benar;
Langkah 3 - Jika nilai pembolehubah isSetBit adalah palsu dan bit semasa ialah bit set, maka tukar nilai pembolehubah isSetBit kepada benar.
Langkah 4 - Gerakkan nombor ke kanan sebanyak 1.
Dalam contoh di bawah, kami menggunakan gelung sementara untuk mengulang nombor dan menyemak setiap digit nombor itu. Jika kita mendapat bit set kedua dalam nombor, kita akan mengembalikan palsu.
<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>
Jika nombor adalah kuasa 2, bit paling kiri mengandungi hanya 1. Jika kita menolak 1 daripada kuasa 2, bit paling kiri nombor mengandungi 0 dan bit lain mengandungi 1. Jadi jika kita melakukan operasi "&" antara n dan n-1, ia akan sentiasa mengembalikan sifar untuk semua nombor yang sama dengan kuasa 2.
Pengguna boleh menggunakan operator ‘&’ seperti dalam sintaks di bawah untuk menyemak sama ada nombor yang diberikan ialah kuasa 2.
let isPowerOf2 = number && !(number & number - 1)
Dalam contoh di bawah, kami mula-mula menyemak sama ada nombor dalam pernyataan if bukan sifar. Kami kemudian menyemak sama ada "n & n-1" adalah sama dengan 0 untuk melihat sama ada nombor itu adalah kuasa 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>
Atas ialah kandungan terperinci Program JavaScript untuk menyemak sama ada nombor yang diberikan ialah kuasa 2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!