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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ★彬★卍囧神 中级黑马   /  2014-5-12 18:25  /  2500 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ★彬★卍囧神 于 2014-5-13 13:09 编辑
  1. /*
  2. 编写一个函数输出整数的二进制形式?
  3. */

  4. #include <stdio.h>
  5. void erzhuan(int n );  //整数转二进制函数转换函数申明
  6. int main()
  7. {        int a;
  8.         printf("请输入一个整数:\n");
  9.         scanf("%d",&a);
  10.         erzhuan(a);
  11.         return 0;

  12. }

  13. void erzhuan(int n )
  14. {
  15.         int number =  (sizeof (int) << 3) - 1 ;  //调用sizeof函数算字节数
  16.         for( int h;number >= 0; number--)
  17.         {        
  18.                 if( (number+1) % 4 == 0)        {                //每4个就空格一次
  19.                         printf(" ");   }
  20.                                 h=n>>number&1;                                //右移动number个单位
  21.                                 printf("%d",h);
  22.                                 
  23.         }
  24.         printf("\n");
  25. }
复制代码



点评

发代码请用插入代码的格式  发表于 2014-5-12 18:38

19 个回复

倒序浏览
学习了啊
回复 使用道具 举报
lijifeng 来自手机 中级黑马 2015-3-15 10:26:04
藤椅
开始学习了,希望你成功
回复 使用道具 举报
注释的不够细致,number 的结果是得到的位数吧。
回复 使用道具 举报
妈妈虎虎把
回复 使用道具 举报
表示没有电脑练手的孩子上不起...
回复 使用道具 举报
哈哈, 这个在 c 基础里面有讲我看过
回复 使用道具 举报
1048 中级黑马 2015-3-17 09:42:08
8#
过来看看~
回复 使用道具 举报
我看不懂 能讲讲那个左移是什么意思吗?
回复 使用道具 举报
有没有0基础教程啊,认识一下变量 运算符的那些。
回复 使用道具 举报
gamyc 中级黑马 2015-5-15 12:09:27
11#
学习了 ,祝你早日进入黑马学习
回复 使用道具 举报
好吧 看懂了一点点  
回复 使用道具 举报
长知识了,楼主多交流啊
回复 使用道具 举报
6666666666666666666666
回复 使用道具 举报
夏末未至 来自手机 中级黑马 2015-8-2 23:27:58
15#
师兄是第几期的?
回复 使用道具 举报
之前视频里也有这个的例子,学习了 ,加油
回复 使用道具 举报
整型占4字节32位,
程序的意思:number初始化为31。整形数在内存中以二进制存储,通过for循环把该存储形式的高位到低位右移至最右边的最低位然后和0x1与运算输出,这样就是输出32位中的每一位,从高到低位输出,每输出八位用空格隔开。
最高位需要右移31位才能到最右边一位,同理,最低位需要右移0位,number的作用就是记录输入数据中每一位需要右移的位数。
回复 使用道具 举报
FTD 中级黑马 2015-10-8 23:09:46
18#
挺好的,可以好好学习啦,不错不错
回复 使用道具 举报
开眼了哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马