Advertisement
Sta99ot

Untitled

Apr 13th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.22 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4. int main()
  5. {
  6.     int number, count = 0;
  7.     cin >> number //читаем число
  8.  
  9.     for (int i=0; i<32; i++) // в числе типа int всего 32 бита
  10.     {
  11.         if (((1<<i) & number) > 0 // условие: является ли бит под номером i ненулевым
  12.         {
  13.         /*
  14.         операция << - это побитовые сдвиг числа влево
  15.         6 << 1 сдвинуть 6 на 1 бит влево, (110 превратится в 1100 - это 12)
  16.         только тут мы сдвигаем всегда единицу на номер шага в цикле, будет получаться
  17.         1, 2, 4, 8, 16, 32... и т.д.
  18.         потом делаем побитовое и с числом и смотрим что результат ненулевой, если результат ненулевой, то
  19.         бит под номером i в числе равен одному
  20.         */
  21.             count++;
  22.         }
  23.     }
  24.  
  25.     if(count == 1) // ну собственно у чисел степеней двоек должен быть всего 1 ненулевой бит
  26.     {
  27.         cout << "YES";
  28.     }
  29.     else
  30.     {
  31.         cout << "NO";
  32.     }
  33.  
  34.     return 0;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement