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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这是代码,逻辑,编译链接都没有问题,可是输出结果不正确,求基础好的为我解惑
#import <Foundation/Foundation.h>
void printBary(int n);
int main(int argc, const char * argv[]) {
    printBary(12);
    return 0;
}
void printBary(int n)
{
    int count = 0;
    for (int i = (sizeof(int)*8-1); i>0; i--,count++) {
        printf("%d",(n>>i)&1);
        if ((count+1)%4==0) {
            printf(" ");
        }
    }
}
输出是这样的:0000 0000 0000 0000 0000 0000 0000 110

6 个回复

倒序浏览
块晕了都 基本上是按老师的照抄了 可是输出还是不对,到底错哪里了,真是抓狂
回复 使用道具 举报
1.你的输出少了一个二进制啊,循环次数有问题?
2.
  1. #import <stdio.h>
  2. void p(int n)
  3. {
  4.     printf("%d",n);
  5. }
  6. void bin(unsigned char n)
  7. {
  8.     p ((n>>7 )& 1);
  9.     p ((n>>6 )& 1);
  10.     p ((n>>5 )& 1);
  11.     p ((n>>4 )& 1);
  12.     p ((n>>3 )& 1);
  13.     p ((n>>2 )& 1);
  14.     p ((n>>1 )& 1);
  15.     p ((n>>0 )& 1);
  16. }
  17. int main()
  18. {
  19.     bin(11);
  20.    
  21. }
复制代码
回复 使用道具 举报
你少了 (n>>0 )& 1
回复 使用道具 举报
i>=0试试
回复 使用道具 举报
Emma 发表于 2015-5-21 16:32
1.你的输出少了一个二进制啊,循环次数有问题?
2.

好吧>=0就可以了
回复 使用道具 举报
Emma 发表于 2015-5-21 16:34
你少了 (n>>0 )& 1

3Q 受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马