Добрый день. У меня такой вопрос. Что бы подсчитать кол-во единиц в двоичной записи числа можно сделать такЖ while (a != 0) { n = n + a%2; a = a/2; //что-то типа div } Как это реализовать через побитовые операции????
Приветствую Вас, Владимир! while (a!=0) {n+=a&0x1; a>>=1;} Но это имено для "подсчитать кол-во единиц в двоичной записи числа". А не число значимых двоичных разрядов, как в Вашем примере. Удачи! Ответ отправлен: 21.06.2002, 09:42 Отправитель: Leonid Отвечает kvINT
Добрый день, Владимир! Используй команды сдвига и при каждом сдвиге анализируй флаг переноса. Ответ отправлен: 20.06.2002, 10:57 Отправитель: kvINT Отвечает vitya
Здравствуйте, Владимир! предлагаю следующий алгоритм int n = 0; while (a) { if (a & 0x01) ++n; a >>= 1; } но есть алгоритм и лучше, который находит за время logN, что несомненном лучше. Ответ отправлен: 18.06.2002, 13:34 Отправитель: vitya
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.