Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 024
от 21.06.2002, 11:30

Администратор:
Имя: Коробов Н.А.
URL: Информационный ресурс
ICQ: 365124
Украина, Днепропетровск
О рассылке:
Задано вопросов: 79
Отправлено ответов: 128
Активность: 162.0 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


 Список экспертов, ответы которых опубликованы в данном выпуске

Leonid
Статус: Начальный
Общий рейтинг: 109.52
[Подробней >>]
kvINT
Статус: Доверительный
Общий рейтинг: 114.52
[Подробней >>]
vitya
Статус: Опытный
Общий рейтинг: 117.36
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 72. Добрый день. У меня такой вопрос. Что бы подсчитать кол-во единиц в двоичной записи числа можно с... (ответов: 3)

Вопросов: 1, ответов: 3


 Вопрос № 72

Добрый день. У меня такой вопрос.
Что бы подсчитать кол-во единиц в двоичной записи числа можно сделать такЖ
while (a != 0)
{ n = n + a%2;
a = a/2; //что-то типа div
}
Как это реализовать через побитовые операции????



Вопрос отправлен: 18.06.2002, 09:39
Отправитель: Владимир

[Следующий вопрос >>] [Список вопросов]

Отвечает Leonid

Приветствую Вас, Владимир!
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.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (50)
C / C++ (28)
Perl (9)
Delphi (15)
Pascal (27)
Basic / VBA (16)
Java / JavaScript (7)
PHP (7)
MySQL / MSSQL (8)
Пользователю
Windows 95/98/Me (47)
Windows NT/2000/XP (34)
"Железо" (40)
Поиск информации (21)
Администратору
Windows NT/2000/XP (16)
Linux / Unix (9)
Юристу
Гражданское право (11)
Семейное право (5)
Трудовое право (6)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное