skytec 2015-06-09 03:32 采纳率: 0%
浏览 1900

for里面的printf是怎么执行的

/*把一个十进制数以二进制输出*/
#include

int main(void)
{
const int bit = sizeof(int) * 8; //判断整型有多少位
unsigned int bak = 1 << bit-1; //一个数只有第一位为1,其余全为0
int num;
int i;

printf("请输入一个数:");
scanf("%d", &num);

for(i = 1; i <= bit; ++i)
{
/*  if(num & bak)        //相与的结果只有0或者不是0,不是0则输出字符1
    {
        printf("%c", '1');
    }
    else
    {
        printf("%c", '0');
    }
    bak = bak >> 1;      //每一次把bak右移一位
*/
    printf("%c", num < 0 ? '1' : '0');
    num <<= 1;  
}
printf("\n");

return 0;

}

  • 写回答

8条回答

  • threenewbee 2015-06-09 03:52
    关注

    10进制转2进制,
    每次除以2,输出余数,将余数反过来就是结果,举例:
    123
    123 % 2 = 1
    123 /2 = 61
    61 % 2 = 1
    61 / 2 = 30
    30 % 2 = 0
    30 / 2 = 15
    15 % 2 = 1
    15 / 2 = 7
    7 % 2 = 1
    7 / 2 = 3
    3 % 2 = 1
    3 / 2 = 1
    1 % 2 = 1
    1 / 2 = 0
    所以结果(从下往上列出余数)1111011

    评论

报告相同问题?

悬赏问题

  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题