Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1319829
  • 博文数量: 168
  • 博客积分: 2124
  • 博客等级: 大尉
  • 技术积分: 2590
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-16 23:51
文章分类

全部博文(168)

文章存档

2014年(6)

2013年(74)

2012年(71)

2011年(17)

分类: C/C++

2013-08-08 15:16:04

额,这篇文章也是管理员昨天删的,(管理员,亲,看到以后别删了,我这真不是什么广告,是根据题目自己写的代码)

这是之前根据16进制转变为字符串的形式想起来的,写了几天程序,还是这个最让我高兴,有种学以致用的感觉。

点击(此处)折叠或打开

  1. /*********************************************************
  2. 2. 数制转换
  3.  
  4. * 问题描述:
  5.  在 32 位处理器上,将任一整数转换为二进制形式。
  6.  
  7. * 要求实现函数:
  8.  void DecToBin (unsigned int iDec, char pBin[32])
  9.  输入:iDec 需要转换的十进制整数
  10.  输出:pBin 转换为二进制后的字符串,高位在左边,不足 32位补0
  11.  
  12.  * 示例
  13.  输入:123
  14.  输出:{“00000000000000000000000001111011”}
  15. ********************************************************/

  16. #include<stdio.h>
  17. /********************************************************
  18. 编程思路:
  19.     先将数组初始化为0,整数自除,余数输出
  20.     注意一点,这里要有一次itoa,因为数组字符串给的是字符型
  21.     (实际上那给32位是肯定不够的,假如遇见很大的数,因为有‘\0’)
  22. *********************************************************/

  23. void DecToBin (unsigned int iDec, char pBin[32])
  24. {
  25.     int i;
  26.     for(i = 0; i < 32; i++)
  27.         pBin[i] = '0';

  28.     for(i = 0; iDec != 0; iDec /= 2, i++)
  29.         pBin[31-i] = "01"[iDec % 2];
  30. }

  31. int main(int argc, char **argv)
  32. {    
  33.     int i;
  34.     unsigned idec = 123;
  35.     char pBin[32] = {'1', '2', '5'};
  36.     
  37.     DecToBin(idec, pBin);
  38.     
  39.     for(i = 0; i < 32; i++)
  40.     {
  41.         printf("%c", pBin[i]);
  42.     }
  43.     
  44.     while(1);
  45. }

阅读(1906) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~