输出正整数二进制的位置(难度:半颗星)

来源:互联网 发布:php制作动态网页作品 编辑:程序博客网 时间:2024/06/03 21:32

问题描述:

输入一个正整数,输出这个正整数转换成二进制后的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;}

运行结果:

这里写图片描述

原创粉丝点击