问题描述:
输入一个正整数,输出这个正整数转换成二进制后的1的位置。
例如:
输入:11
输出:1 2 4
PS:11转成二进制位1011(从左到右,从1开始数)
参考代码:
#include <stdio.h>
int main()
{
int num, temp = 1, nCnt = 1;
scanf_s("%d", &num);
while (temp <= num)
{
if (temp & num)//为1的位直接输出
printf("%d ", nCnt);
nCnt++;//记录位数
temp <<= 1;//移位操作,来判断下一个位是否为1
}
printf("\n");
return 0;
}
运行结果: