Kod binari ialah sistem mewakili maklumat atau data menggunakan sistem nombor asas-2. Ia hanya menggunakan dua digit, biasanya 0 dan 1, untuk mewakili semua nilai. Setiap digit dalam kod binari dipanggil bit (singkatan untuk digit binari).
Dalam kod binari, setiap digit mewakili kuasa 2. Bermula dari digit paling kanan, kuasa 2 meningkat dari kanan ke kiri. Contohnya, dalam kod binari 8-bit, bit paling kanan mewakili 2^0 (1), bit seterusnya mewakili 2^1 (2), bit seterusnya mewakili 2^2 (4), dan seterusnya.
Mari kita ambil nombor perpuluhan 42 dan mewakilinya dalam kod binari. Untuk menukar 42 kepada binari, kami membahagikannya berturut-turut dengan 2 dan menjejaki baki sehingga hasil bagi menjadi sifar.
Berikut adalah proses langkah demi langkah:
Langkah 1
42 ÷ 2 = 21, baki 0
Langkah 2
21 ÷ 2 = 10, baki 1
Langkah 3
10 ÷ 2 = 5, baki 0
Langkah 4
5 ÷ 2 = 2, baki 1
Langkah 5
2 ÷ 2 = 1, baki 0
Langkah 6
1 ÷ 2 = 0, baki 1
Untuk mendapatkan perwakilan binari, kita mulakan dari bawah (baki terakhir) dan baca baki dari bawah ke atas.
Kod binari yang terhasil untuk 42 ialah: 101010
Jadi, nombor perpuluhan 42 diwakili sebagai 101010 dalam kod binari.
Dalam konteks kod binari, bit set merujuk kepada digit binari (bit) yang ditetapkan kepada nilai 1. Sebaliknya, bit jelas merujuk kepada digit binari yang ditetapkan kepada nilai 0.
Contoh
Sebagai contoh, dalam kod binari 101010, terdapat tiga set bit (bersamaan dengan kedudukan dengan nilai 1) dan tiga bit jelas (bersamaan dengan kedudukan dengan nilai 0).
<?php // Function to get no of set // bits in binary representation // of positive integer n function countSetBits($n) { $count = 0; while ($n) { $count += $n & 1; $n >>= 1; } return $count; } // Driver Code $number= 12; echo "Number of setbits in $number: " .countSetBits($number); ?>
Number of setbits in 12: 2
<?php // PHP implementation of recursive // approach to find the number of // set bits in binary representation // of positive integer n // recursive function // to count set bits function countSetBits($n) { // base case if ($n == 0) return 0; else // if last bit set // add 1 else add 0 return ($n & 1) + countSetBits($n >> 1); } // Driver code // get value from user $n = 123; // function calling echo "Number of setbits in $n are: ".countSetBits($n); ?>
Number of setbits in 123 are: 6
Sebagai kesimpulan, kita boleh mengira set bit (1s) dalam integer menggunakan kedua-dua pendekatan rekursif dan gelung melalui semua bit dalam PHP. Pendekatan gelung melibatkan lelaran melalui setiap bit integer menggunakan gelung sementara. Kami memulakan pembolehubah pembilang dan lelaran sehingga nombor menjadi 0. Di dalam gelung, kami menggunakan bitwise DAN dengan 1 untuk menyemak bit yang paling tidak ketara. Jika ia sama dengan 1, kami menambah pembilang. Kemudian, kami mengalihkan nombor dengan 1 bit ke kanan. Proses ini berterusan sehingga semua bit telah disemak, dan kiraan akhir dikembalikan.
Untuk pendekatan rekursif, kita boleh mentakrifkan fungsi rekursif yang mengambil integer sebagai input. Di dalam fungsi, kami menyemak bit paling tidak signifikan menggunakan operator DAN bitwise dengan 1. Jika ia sama dengan 1, kami menambah pembilang. Kemudian, kami mengalihkan nombor itu dengan 1 bit dan secara rekursif memanggil fungsi dengan nombor yang dikemas kini. Kes asas ialah apabila nombor menjadi 0, di mana kita mengembalikan kaunter. Pendekatan ini mengira bit set secara rekursif sehingga nombornya menjadi 0. Kedua-dua pendekatan menyediakan cara untuk mengira bit set dalam integer, membenarkan pilihan pelaksanaan yang berbeza berdasarkan keperluan dan keutamaan khusus pengaturcara.
Atas ialah kandungan terperinci Program PHP untuk Mengira Set Bit dalam Integer. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!