Форум программистов, компьютерный форум CyberForum.ru

Как приведенный код выводит ближайшую степень двойки? Разобрать работу программы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить количество слов, начинаются и заканчиваются одной и той же буквой http://www.cyberforum.ru/cpp-beginners/thread1079147.html
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, начинаются и заканчиваются одной и той же буквой.
C++ Дана строка. Подсчитать количество цифр, содержащихся в ней Дана строка. Подсчитать количество цифр, содержащихся в ней. http://www.cyberforum.ru/cpp-beginners/thread1079146.html
Выяснить, которых больше символов '+' или '*'. C++
Дано натуральное число n и символы s1, s2, ..., sn. Выяснить, которых больше символов '+' или '*'.
Определить, есть ли в матрице нулевые элементы C++
Доброго времени суток. У меня задание на поиск присутствия нулевых элементов в матрице. Вот код: #include <iostream> using namespace std; int i,j; bool solve(double **a, int n, int m) { bool b; b=false; for (i=0;i<n;i++)
C++ Необходимо организовать однонаправлений список структурой, и предусмотреть следующие действия : http://www.cyberforum.ru/cpp-beginners/thread1079140.html
В работе необходимо организовать однонапрямлений список структурой, и предусмотреть следующие действия : - добавление элементов в список; - исключение элементов из списка; - добавление элементов в конец списка; - поиск по заданным полем; - печать списка. наша структура с именем AEROFLOT, что содержит следующие поля: CITY - название населенного пункта назначения,
C++ Записать пятизначное число в строку, с отступом в 3 пробела между каждой цифрой Потрібно написать програму , яка записує пятницифреве число в рядок , з відступом в 3 пробіли між кожною цифрою. На вході маємо ціле пятизначне число. Підскажіть будь ласка , алгоритм . Дякую!!! Нужно написать программу, которая записывает пятизначное число в строку, с отступом в 3 пробела между каждой цифрой. На входе имеем целое пятизначное число. Подскажите пожалуйста, алгоритм Пункт... подробнее

Показать сообщение отдельно
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
23.01.2014, 13:09     Как приведенный код выводит ближайшую степень двойки? Разобрать работу программы
Цитата Сообщение от Live4Sky Посмотреть сообщение
C++
1
2
3
4
unsigned k ;
cin>>k;
for (--k;k&(k+1);k|=k+1);
cout<<++k;
Данный код эквивалентен
C++
1
2
3
4
5
6
--k;
while( k&(k+1) ) // то есть, пока  k&(k+1) не равно нулю 
{
    k = k | (k+1);
}
++k;
Чтобы понять, что делает команда k = k | (k+1); попробуем вычислить для какого-то конкретного числа.
Пример
1 0 0 1 1 0 1 : k
1 0 0 1 1 1 0 : k + 1
1 0 0 1 1 1 1 : k | ( k + 1 )
Ещё пример
1 1 0 0 0 0 1 1 1 : k
1 1 0 0 0 1 0 0 0 : k + 1
1 1 0 0 0 1 1 1 1 : k | ( k + 1 )
Можете Вы заметить какую-нибудь закономерность? Если нет, можно попробовать ещё к.-н. значение k. Для этого потребуется вспомнить: 1) как складывать числа "столбиком", 2) что означает операция |
 
Текущее время: 18:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru