黑马程序员技术交流社区

标题: 关于C语言输出二进制码的问题 [打印本页]

作者: 37°天黑    时间: 2015-4-6 22:38
标题: 关于C语言输出二进制码的问题
整体程序如下,为何我写出来以后运行发现输出位数不对呢?
#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:}
作者: 37°天黑    时间: 2015-4-6 22:47
没人吗 好困啊,坐等回帖!
作者: chenzuliang1993    时间: 2015-4-6 22:50
int temp = sizeof(number)<<(3 - 1);  这里3-1要括起来看做一个整体
作者: 冬天的章鱼烧    时间: 2015-4-6 23:05
,左移加括号,打印结果是啥来着
作者: 37°天黑    时间: 2015-4-7 21:13
chenzuliang1993 发表于 2015-4-6 22:50
int temp = sizeof(number)

昂 是的,谢谢啦.
作者: 37°天黑    时间: 2015-4-7 21:14
冬天的章鱼烧 发表于 2015-4-6 23:05
,左移加括号,打印结果是啥来着

number<<3 是number*2的三次方的意思!
作者: bieny    时间: 2015-4-7 21:25
:loveliness:
作者: 冬天的章鱼烧    时间: 2015-4-8 00:25
37°天黑 发表于 2015-4-7 21:14
number

我没说不是啊= =
作者: 37°天黑    时间: 2015-4-8 21:44
冬天的章鱼烧 发表于 2015-4-8 00:25
我没说不是啊= =

{:3_59:}噢哈哈




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2