天梯-零头就抹了吧
涉及知识点
位运算:通过位运算快速找到小于等于输入整数 n 的最大2的幂次方数。
数学知识:如果一个数的二进制表示中不只有最高位是1,那么它就不是2的幂次方数。因此最高位是1且其余位都是0的数字,正是2的幂次方数。
#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;int x=1;//x用于存储当前的2的幂次方数,初始值为2的0次方(即1)。while(x<<1<=n) x<<=1;//如果x乘以2后的值仍然小于等于n,则继续循环cout<<x<<endl;return 0;
}