اون کدی که شما نوشتی که کاری نمی کنه عدد رو شیفت میده به راست دوباره شیفت میده به چپ .
شیفت کردن به راست مثل تقسیم به 2 میمونه میتونی مثل همون روشی که به 2 تقسیم می کنی تا وقتی که 0 نشده بنویسیش
یا یک راه دیگه این که از اون جایی که می دونیم عدد اگر توانی از 2 باشه به این شکله :
10 یا 100 یا 1000 و...
و اگر عدد توانی از 2 -1 باشه این شکلی میشه :
01 یا 011 یا 0111 ,...
جالا کافیه این 2 تا رو با هم & کنیم اگر 0 شد یعنی توان 2 هست ( البته برای 1 جواب نمیده )
int main()
{
long long a;
long long b;
cout<<"enter a number:"<<endl;
cin>>a;
if(a==1)
return 0;
if((a&(a-1)) == 0)
cout<<"yes";
}
یِا این که مثلا می تونی اگر عدد زوج نبود سریع بگی توان 2 نیست :
(x & 1) != 0