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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wc88212 中级黑马   /  2016-7-23 20:42  /  889 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题,我们都知道,C语言中,二进制是无法直接打印出来的,但换个思路,还是可以打印的
  1. //int类型
  2. void printbinary(int num)
  3. {
  4.     int length = sizeof(num)*8;
  5.     for(int i = 0;i<length;i++)
  6.     {
  7.         if(i!=0&&i%4==0)
  8.         {
  9.             printf(" ");
  10.         }
  11.         printf("%d",1&(num>>(31-i)));
  12.     }
  13.     printf("\n");
  14. }
复制代码
  1. //char类型
  2. void printbinary(char num)
  3. {
  4.     int length = sizeof(num)*8;
  5.     for(int i = 0;i<length;i++)
  6.     {
  7.         if(i!=0&&i%4==0)
  8.         {
  9.             printf(" ");
  10.         }
  11.         printf("%d",1&(num>>(7-i)));
  12.     }
复制代码
思想是任何数&1,都得到的是这个数的补码的二进制形式的最末一位,循环遍历这个数的每一位,并取得每一位的值,得到的就是这个数的二进制的补码形式

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马