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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 wx_D3aDvzRw 于 2015-9-26 21:28 编辑

#include <stdio.h>
//为了规避正负值的判断,采用1左移运算排除正负值干扰,嘿嘿,比老师那版代码格式看着好看些.
void changeTo0b(){
    printf("请输入一个数字会以二进制输出\n");
    int a;
    scanf("%d",&a);
    for (int i=1; i<=32; i++) {
        printf("%d",a&1<<(32-i)?1:0);//移动1的位置从而与原数做与运算,为0打印0,非0打印1.
        printf("%c",i%8?'\0':' ');//每8位输出一个空格提高输出阅读性
    }
    printf("\n");
}

int main() {
    changeTo0b();
    return 0;
}

黑马入学视频辅导班,双元课堂ios0919班 王旭

19 个回复

倒序浏览
       顶一个
回复 使用道具 举报
顶一帖  支持加精
回复 使用道具 举报
   赞一个
回复 使用道具 举报
这方法思想好独特,这样就避免了因为原数右移产生的一系列问题,改用1主动左移去&原数,获取原数的每一位,而且for循环里的两个printf语句写的太帅了,不用多余变量,巧妙地利用了三目运算符可以返回一个值的特点完美与printf函数输出项结合,可见这位同学对所学知识的理解深度,以及灵活应用能力。赞。
回复 使用道具 举报
请叫我焦卷卷 发表于 2015-9-27 16:03
这方法思想好独特,这样就避免了因为原数右移产生的一系列问题,改用1主动左移去&原数,获取原数的每一位, ...

嘿嘿  谢谢夸奖
回复 使用道具 举报

不谢不谢~多多回复赚币呀~
回复 使用道具 举报
挺好的思路
回复 使用道具 举报

嘿嘿  谢谢支持
回复 使用道具 举报
sclea 中级黑马 2015-9-27 21:47:04
10#
看了这算法真的是一种脑洞大开的感觉啊
回复 使用道具 举报
请叫我焦卷卷 发表于 2015-9-27 16:03
这方法思想好独特,这样就避免了因为原数右移产生的一系列问题,改用1主动左移去&原数,获取原数的每一位, ...

然而你的技术分还是没有水够

点评

对呀~我注册完了之后就基本没上过这网站。。。上班没功夫看它呀~~~  发表于 2015-9-28 06:32
回复 使用道具 举报
请叫我焦卷卷 来自手机 中级黑马 2015-9-28 06:40:39
12#
chenxiuyu 发表于 2015-9-27 22:02
然而你的技术分还是没有水够

再说人家这写的确实棒~哈哈~
回复 使用道具 举报
厉害啊。
回复 使用道具 举报
赞一个!!!!
回复 使用道具 举报
很好的算法
回复 使用道具 举报
sclea 发表于 2015-9-27 21:47
看了这算法真的是一种脑洞大开的感觉啊

嘿嘿  见笑  见笑
回复 使用道具 举报

见笑了哈
回复 使用道具 举报
确实不错,我已经收录,猜猜我是谁?
回复 使用道具 举报
lvguodong 发表于 2015-10-5 14:35
确实不错,我已经收录,猜猜我是谁?

同桌 你的id把你暴露了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马