«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > PHP-программа для подсчета множества бит в целом числе

PHP-программа для подсчета множества бит в целом числе

Опубликовано 29 августа 2024 г.
Просматривать:917

Что такое двоичный код?

Двоичный код — это система представления информации или данных с использованием системы счисления с основанием 2. Для представления всех значений используются только две цифры, обычно 0 и 1. Каждая цифра в двоичном коде называется битом (сокращение от двоичной цифры).

В двоичном коде каждая цифра представляет степень 2. Начиная с самой правой цифры, степени 2 увеличиваются справа налево. Например, в 8-битном двоичном коде самый правый бит представляет 2^0 (1), следующий бит представляет 2^1 (2), следующий бит представляет 2^2 (4) и так далее.

Пример

Возьмем десятичное число 42 и представим его в двоичном коде. Чтобы преобразовать 42 в двоичное число, мы последовательно делим его на 2 и отслеживаем остатки, пока частное не станет равным нулю.

Вот пошаговый процесс:

Шаг 1

42 ÷ 2 = 21, остаток 0

Шаг 2

21 ÷ 2 = 10, остаток 1

Шаг 3

10 ÷ 2 = 5, остаток 0

Шаг 4

5 ÷ 2 = 2, остаток 1

Шаг 5

2 ÷ 2 = 1, остаток 0

Шаг 6

1 ÷ 2 = 0, остаток 1

Чтобы получить двоичное представление, мы начинаем снизу (последний остаток) и читаем остатки снизу вверх.

Результирующий двоичный код для 42 : 101010

Итак, десятичное число 42 представлено в двоичном коде как 101010.

Что такое Setbit?

В контексте двоичного кода установленный бит относится к двоичной цифре (биту), которой установлено значение 1. С другой стороны, чистый бит относится к двоичной цифре, которой установлено значение 0.

Пример

Например, в двоичном коде 101010 имеются три установленных бита (соответствующие позициям со значением 1) и три чистых бита (соответствующие позициям со значением 0).

PHP-программа для подсчета множества бит в целом числе

PHP Program to Count set Bits in an Integer

Метод 1: перебрать все биты целого числа

Пример

>= 1;
	}
	return $count;
}

// Driver Code
$number= 12;
echo "Number of setbits in $number: " .countSetBits($number);
?>

Выход

Number of setbits in 12: 2

Метод 2: рекурсивный подход

> 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

Заключение

В заключение, мы можем подсчитать установленные биты (1) в целом числе, используя как рекурсивный подход, так и цикл по всем битам в PHP. Подход с циклом предполагает перебор каждого бита целого числа с использованием цикла while. Мы инициализируем переменную-счетчик и выполняем итерацию, пока число не станет равным 0. Внутри цикла мы используем побитовое И с 1 для проверки младшего бита. Если он равен 1, мы увеличиваем счетчик. Затем мы сдвигаем число вправо на 1 бит. Этот процесс продолжается до тех пор, пока все биты не будут проверены и не будет возвращен окончательный счетчик.

Для рекурсивного подхода мы можем определить рекурсивную функцию, которая принимает целое число в качестве входных данных. Внутри функции мы проверяем младший бит, используя побитовый оператор И со значением 1. Если он равен 1, мы увеличиваем счетчик. Затем мы сдвигаем число вправо на 1 бит и рекурсивно вызываем функцию с обновленным числом. Базовый случай — когда число становится равным 0, и в этот момент мы возвращаем счетчик. Этот подход рекурсивно подсчитывает установленные биты до тех пор, пока число не станет равным 0. Оба подхода обеспечивают способ подсчета установленных битов в целом числе, что позволяет использовать различные варианты реализации в зависимости от конкретных потребностей и предпочтений программиста.

Заявление о выпуске Эта статья воспроизведена по адресу: https://www.tutorialspoint.com/php-program-to-count-set-bits-in-an-integer. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3