Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program PHP untuk mengira bilangan bit set dalam integer

Program PHP untuk mengira bilangan bit set dalam integer

PHPz
PHPzke hadapan
2023-08-22 11:41:13879semak imbas

Apakah itu kod binari?

Kod binari ialah sistem yang menggunakan sistem nombor binari untuk mewakili maklumat atau data. Ia hanya menggunakan dua nombor, biasanya 0 dan 1, untuk mewakili semua nilai. Setiap nombor dalam kod binari dipanggil bit (singkatan untuk digit binari).

Dalam kod binari, setiap nombor mewakili kuasa 2. Bermula dengan nombor 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.

Contoh

Mari tukar nombor perpuluhan 42 kepada kod binari. Untuk menukar 42 kepada binari, kami terus membahagikannya dengan 2 dan menjejaki baki sehingga hasil bagi menjadi sifar

Berikut adalah proses langkah demi langkah:

Langkah pertama

42 ÷ 2 = 21, bakinya ialah 0

Langkah 2

21 ÷ 2 = 10, bakinya ialah 1

Langkah 3

10 ÷ 2 = 5, baki ialah 0

Langkah 4

5 ÷ 2 = 2, bakinya ialah 1

Langkah 5

2 ÷ 2 = 1, bakinya ialah 0

Langkah 6

1 ÷ 2 = 0, baki ialah 1

Untuk mendapatkan perwakilan binari, kita mulakan dari bawah (baki terakhir) dan baca baki dari bawah ke atas

Kod binari untuk 42 ialah: 101010

Jadi, nombor perpuluhan 42 diwakili dalam kod binari sebagai 101010.

Apakah Setbit?

Dalam konteks kod binari, bit set merujuk kepada nombor binari (bit) yang ditetapkan kepada 1. Bit jelas, sebaliknya, merujuk kepada digit binari (bit) yang ditetapkan kepada 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).

Program PHP: Kira bilangan bit set dalam integer

Program PHP untuk mengira bilangan bit set dalam integer

Kaedah 1: Gelung melalui semua bit dalam integer

Contoh

<?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);
?>

Output

Number of setbits in 12: 2

Kaedah 2: Kaedah rekursif

<?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);
?>

Output

Number of setbits in 123 are: 6

Kesimpulan

Ringkasnya, kita boleh mengira bilangan set bit (1) dalam integer menggunakan pendekatan rekursif dan gelung melalui semua bit. Kaedah gelung melibatkan penggunaan gelung sementara untuk melelaran melalui setiap bit integer. Kami memulakan pembolehubah pembilang dan berulang sehingga nombor mencapai 0. Di dalam gelung, kami melakukan bitwise AND dengan 1 menggunakan operator bitwise AND untuk menyemak bit yang paling tidak ketara. Jika ia bersamaan dengan 1, kami menambah pembilang. Kemudian kita alihkan tempat nombor 1 ke kanan. Proses ini berterusan sehingga semua bit telah disemak dan kiraan akhir dikembalikan

Untuk kaedah rekursif, kita boleh mentakrifkan fungsi rekursif yang mengambil integer sebagai input. Di dalam fungsi kami menggunakan operator bitwise AND dan 1 untuk menyemak bit yang paling tidak ketara. Jika ia bersamaan dengan 1, kami menambah pembilang. Kami kemudian mengalihkan nombor ke kanan dengan 1 tempat dan memanggil fungsi secara rekursif dengan nombor yang dikemas kini. Kes asas ialah apabila nombor itu mencapai 0, kami mengembalikan nilai pembilang. Kaedah ini secara rekursif mengira bit set sehingga nombor menjadi 0. Kedua-dua kaedah menyediakan cara untuk mengira bit set dalam integer, dengan pilihan pelaksanaan yang berbeza bergantung pada keperluan dan keutamaan khusus pengaturcara.

Atas ialah kandungan terperinci Program PHP untuk mengira bilangan bit set dalam integer. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam