求助......但不完全求助
2024-02-16 21:52:14
发布于:浙江
44阅读
0回复
0点赞
int main() {
int n;
scanf("%d",&n);
if (n % 2 == 1 || n == 0) printf("-1");
else for (int j = 29; j >= 0; j--) if (n >> j & 1) printf("%d ", 1 << j);
}
不是我不想注释,主要是我之前写的代码现在自己看不懂了(悲),有人能读懂吗?
望大佬能讲解下
全部评论 1
就是二进制,右移n位,与上1还为1说明,原来从右往左数第n位为1(从0开始数)。输出的过程,相当于二进制转十进制,从高位到低位,有1就输出这个1代表的十进制
2024-02-19 来自 江苏
0
有帮助,赞一个