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

Определить, является ли данное число степенью двойки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Клетки http://www.cyberforum.ru/cpp-beginners/thread609558.html
Даны координаты двух полей шахматной доски (координаты клетки - это 2 числа от 1 до 8: номер столбца и номер строки). Одного ли цвета эти клетки на шахматной доске? Вывести в выходной файл сообщение YES, если они одного цвета, и NO иначе. Примеры input.txt output.txt 1 1 2 2 YES 1 1 1 4 NO
C++ Передать функции паметр-итератор есть функция void game::move(deque <Tunit>::iterator nunit) надо чтобы она получала указатель на один из элементов двойной очереди типа Tunit как правильно передавать параметр? вот так не подходит move(&(this->iUnit)) http://www.cyberforum.ru/cpp-beginners/thread609551.html
Подскажите знаковые целые заданной разрядности C++
Вот есть uint16_t. u означает unsigned? А как выглядит знаковый аналог? int16_t не помогло. А нет, он на signed в паре с int16_t ругался.
Вычислить уравнение на интервале C++
Помогите с задачей : Найти корень уравнения φ(х) = 0 на интервале (А, В) с точностью Е=10-4. Известно, что φ(х) на интервале (А, В) непрерывна и монотонна формула в картинке:
C++ Выравнивание структур http://www.cyberforum.ru/cpp-beginners/thread609473.html
typedef struct _WinBMPFileHeader { WORD FileType; DWORD FileSize; WORD Reserved1; WORD Reserved2; DWORD OffBits; } WINBITMAPFILEHEADER; sizeof =16, а на самом деле 14, лишние 2 байта воткнулись между FileType и FileSize из-за выравнивания на границу DWORD. Это файловый заголовок и...
C++ Матрица, найти и поменять местами минимальный и максимальный элемент Помогите с задачей: В квадратной матрице A найти среди элементов, расположенных ниже главной диагонали, минимальный элемент, а среди элементов выше побочной диагонали - максимальный. Поменять их местами. Вывести координаты этих элементов. подробнее

Показать сообщение отдельно
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
20.06.2012, 10:27     Определить, является ли данное число степенью двойки
Цитата Сообщение от taras atavin Посмотреть сообщение
Ещё проще. Надо сосчитать единицы в двоичном коде числа, который есть его внутреннее представление.
на бумаге проще, а на языке?
опять цикл?
Цитата Сообщение от taras atavin Посмотреть сообщение
А с каких пор 0 стал степенью двойки?
а ни с какой
но вот этот код подумает что да
C++
1
2
3
4
bool is_exp_of_2(int n)
{
    return ( n & (n - 1) ) == 0;
}
Цитата Сообщение от Xorboo Посмотреть сообщение
По этой же причине 2^33-1 записывается в int неправильно
вообще то там идет округление и 2^33-1==2^33 (почему и не пользуются плавающими в бухгалтерии)

Добавлено через 5 минут
diagon, слушай а ведь отрицательные не могут быть степенью двойки
может лучше использовать
bool is_exp_of_2(unsigned int n)
 
Текущее время: 01:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru