![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 18.01.2011
Сообщений: 1
|
![]()
В байтовой записи числа посчитать количество единичных битов и переместить их в конец. Условие - побитовая обработка (т.е. без использования массивов), ввод и вывод - шестнадцатиричный.
Может, кто подскажет? Счетчик есть, а вот как переместь единицы в конец - не пойму #include <iostream> using namespace std; int main() { unsigned z; int c=0; scanf ("%x", &z); while (z!=0) { if ((z&1)==1) c++; z>>=1; } printf ("%d\n", c); } |
![]() |
![]() |
![]() |
#2 |
Меркантильный кю
Участник клуба
Регистрация: 02.02.2008
Сообщений: 1,001
|
![]()
Очень просто. Если у Вас в записи числа n единичек, то при перемещении в конец (я так понимаю имеются ввиду младшие биты) они образуют число 2^(n-1)-1
Код:
Росли вроде умными, выросли дурнями... (c)А.Васильев
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача на С++ | HelpC++ | Фриланс | 4 | 18.01.2011 13:51 |