黑马程序员技术交流社区
标题:
关于打印一个整数二进制位的问题求解
[打印本页]
作者:
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.
#import <stdio.h>
void p(int n)
{
printf("%d",n);
}
void bin(unsigned char n)
{
p ((n>>7 )& 1);
p ((n>>6 )& 1);
p ((n>>5 )& 1);
p ((n>>4 )& 1);
p ((n>>3 )& 1);
p ((n>>2 )& 1);
p ((n>>1 )& 1);
p ((n>>0 )& 1);
}
int main()
{
bin(11);
}
复制代码
作者:
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