A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

整体程序如下,为何我写出来以后运行发现输出位数不对呢?
#include <stdio.h>
void printBinary(int number);
int main()
{
        printBinary(15);
        return 0;

}
void printBinary(int number)
{
        int temp = sizeof(number)<<3 - 1;
       
        while(temp>=0)
        {
                int value = number>>temp & 1;
                printf("%d",value);
                temp--;

                if ((temp+1)%4 == 0)
                {
                        printf(" ");
                }
        }
        printf("\n");
}
求大神解答{:3_49:}

9 个回复

倒序浏览
没人吗 好困啊,坐等回帖!
回复 使用道具 举报
int temp = sizeof(number)<<(3 - 1);  这里3-1要括起来看做一个整体
回复 使用道具 举报
,左移加括号,打印结果是啥来着
回复 使用道具 举报

昂 是的,谢谢啦.
回复 使用道具 举报
冬天的章鱼烧 发表于 2015-4-6 23:05
,左移加括号,打印结果是啥来着

number<<3 是number*2的三次方的意思!

点评

乘还是除。我给忘啦。  发表于 2015-4-7 21:35
回复 使用道具 举报
:loveliness:
回复 使用道具 举报

我没说不是啊= =
回复 使用道具 举报

{:3_59:}噢哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马