Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program PHP untuk Mengira Set Bit dalam Integer

Program PHP untuk Mengira Set Bit dalam Integer

王林
王林asal
2024-08-28 12:07:181019semak imbas

Apakah itu kod Binari?

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.

Contoh

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.

Apakah Setbit?

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

Program PHP untuk Mengira Set Bit dalam Integer

PHP Program to Count set Bits in an 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: Pendekatan 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

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn