Как узнать в каких разрядах стоят единицы?

Компьютеры программирование Информатика

Есть число произвольное число integer (32 бита). Нужно узнать в каких разрядах его двоичного представления стоят единицы, а в каких - нули. Т.е. получить числа типа - 3, 4 - для 12 или 2, 4, 5, 8 для 154.
Наверняка есть какой-нибудь простенький алгоритм, который я не знаю, т.к. не по той специальности учился просто..
А если в php есть стандартная ф-ция для этого - ваще супер было бы. :о)

Примечание:
adasiko,
Еще бы понять, как их применять в реальной жизни.. =)
Мне приходит в голову только перебрать все разряды побитовым "И" если.. Но неужели чего попроще нету?

Примечание:
Technobulka, ну да.. можно, конечно, через строку.. на php только вместо toString() будет функция decbin().
Я, впрочем, уже измыслил решение с побитовыми операциями. Если кому пригодится оно такое:

$x=154;
$y=1;
for($i=1; $i<17; $i++){
if($x & $y){
$r[]=$i;
}
$y = $y<<1;
}
Ответы:
Ну дык битовые операции они и в PHP битовые операции
хезе, как не пхп, но на жс мона сделать так:


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.