黑马程序员技术交流社区

标题: 关于打印一个整数二进制位的问题求解 [打印本页]

作者: jingkai    时间: 2015-5-21 10:15
标题: 关于打印一个整数二进制位的问题求解
这是代码,逻辑,编译链接都没有问题,可是输出结果不正确,求基础好的为我解惑
#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
作者: jingkai    时间: 2015-5-21 10:16
块晕了都 基本上是按老师的照抄了 可是输出还是不对,到底错哪里了,真是抓狂
作者: Emma    时间: 2015-5-21 16:32
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. }
复制代码

作者: Emma    时间: 2015-5-21 16:34
你少了 (n>>0 )& 1
作者: mony    时间: 2015-5-21 16:39
i>=0试试
作者: jingkai    时间: 2015-5-22 07:44
Emma 发表于 2015-5-21 16:32
1.你的输出少了一个二进制啊,循环次数有问题?
2.

好吧>=0就可以了
作者: jingkai    时间: 2015-5-22 07:45
Emma 发表于 2015-5-21 16:34
你少了 (n>>0 )& 1

3Q 受教了




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