回 帖 发 新 帖 刷新版面

主题:十进制转二进制////

大家可以编都可以编十进制转换为十六进制,那请问那位仁兄可以帮一下叶子编一个
转为二进制的数呢?也就是把一个十进制数转换为二进制数输出!要用程序编写!为C语言:

回复列表 (共8个回复)

沙发

do
        {
                mod = div %2;
                div = div /2;

                printf("%d", mod);
        }while(div >0);

板凳

1楼的,输出顺序反了吧?!

3 楼

一着急的确弄反了,设置个数字逆顺序输出就ok了

        int output[20] = {0};
        int num = 0;

do
        {
                mod = div %2;
                div = div /2;
                output[num ] = mod;
                num ++;

        }while(div >0);

        num--;
        for (; num >= 0; --num)
        {
                printf("%d", output[num]);
        }

4 楼

请问还其它做法吗?我想不要用除,

5 楼

最直接的当然是调用C的函数库了 &-)
在"stdlib.h"中有一个函数: itoa; 它的功能是可以把指定的整数转换成任意进制(进制在2~36之间)的字符串.该函数原型如下:
  char * itoa (int num, char *str, int radix)
其中:num是你给出的整数;
      str是一个字符串数组,转换后的结果将存放其中
      radix指定转换输出的进制;最小值是2,最大值是32。

以本题为例:

#include "stdlib.h"  //注意,一定要加入这一句哟!

int input;
char output[20];

......

itoa(input, output, 2);   //因为是转换成二进制,所以第三个参数为2
printf("The binary of %d is %s", input, output);

......


另外:1、itoa()这个函数返回由str所指向的指针,一般没有返回错误值。
   2、调用itoa()时,一定要用足够长度的字符串来保存转换后的结果,所需
     最大长度为17个字节。
   3、与itoa()相类似还有一个函数:ltoa(),它的作用是将长整数转换成任
     意进制(进制在2~36之间)的字符串。用法和itoa几乎一样,但要注意转
     换结果所需的最大长度为33个字节。

6 楼

是吗!那我得试试!谢谢

7 楼

char * itoa (int num, char *str, int radix)
确实这个函数,不错的

8 楼

unsigned a;
cin>>a;
while(a)
  {cout<<a&0x8000;
   a=a<<1;
   }
或许可以。(假定整数为2字节)

我来回复

您尚未登录,请登录后再回复。点此登录或注册