Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2018, 17:25   #1
Александр121
Форумчанин
 
Регистрация: 17.09.2017
Сообщений: 265
По умолчанию Бинарные числа - C++

как работает это строка? что она делает? и зачем сравнивается с 0?
задача определить является ли число бинарным это числа которые два возводится в степень можете обьяснить алгоритм.

Код:
a & (a - 1))==0
Код:
#include <fstream>
#include <iostream>
using namespace std;
int qwe(int a)
{
if ((a & (a - 1))==0  && a>0)
 //a & (a - 1)) логическое выражение истино если число
 //являетсья степенью двойки
 
    cout <<"YES";
else
cout <<"NO";
}
int main(){
    int a;
    cin>>a;
    qwe(a);
    }
Александр121 вне форума Ответить с цитированием
Старый 11.03.2018, 17:49   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от Александр121 Посмотреть сообщение
что она делает
http://graphics.stanford.edu/~seande...mineIfPowerOf2
waleri вне форума Ответить с цитированием
Старый 12.03.2018, 00:01   #3
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

В любом числе, которое = 2^n, есть только один бит = 1
И при вычитании из него получается, например, такое:
010000000 - 1 =
001111111

Соответственно, & даёт ноль.
И так только с числами, в которых один единичный бит.

Это ещё применяется для подсчёта числа единичных бит методом "откусывания" последнего бита (v&(v-1)) равен v, в котором последнюю единицу заменили на ноль.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 12.03.2018, 01:03   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
задача определить является ли число бинарным это числа которые два возводится в степень можете обьяснить алгоритм.
рюска языка такая сложный
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать программу,имеющая процедуру,кторая в производном текстовом файле,которая имеет слова и числа,изменяющая все числа числа,ме Fingergod Паскаль, Turbo Pascal, PascalABC.NET 0 13.12.2012 20:08
Задачи в ТурбоПаскаль: найти числа Армстронга и просуммировать числа в последовательности номера которых простые числа Lena1808 Помощь студентам 1 17.05.2012 08:00
Бинарные последовательности Neonch Паскаль, Turbo Pascal, PascalABC.NET 1 04.05.2011 22:16
Haskell Обыкновенные числа в бинарные kikat Помощь студентам 0 13.01.2011 18:45
Haskell Обыкновенные числа в бинарные kikat Помощь студентам 0 13.01.2011 02:12