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

    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?