十进制转二进制可以使用库函数itoa。
itoa函数原型:char*itoa(int value,char*string,int radix)
功能:将任意类型的数字转换为字符串。在<stdlib.h>中与之有相反功能的函数是atoi。
nt value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等。
参考代码:
#include <stdio.h>#include<stdlib.h>
int main()
{
int i=10
char a[100]
itoa(i,a,2)
printf("%s\n",a)
return 0
}
/*
1010
*/
第一:math.h头文件在这没用上,可删。第二:tol从二进制高位开始累加,先加的是最左边的数,所以每次加完以后,所有二进制数都要要左移一位。
第三:tol+的是二进制数0或者1,而st字符串中每一位都是字符'0'或者'1',所以需要*st-'0'来把字符转换成数字。*st++为里循环取出每一个字符,++在后是先取值再加加.
所以*st++-'0'就相当于*st-'0'st++这两句。
另外,你贴的代码二进制转十进制,不是十转二进制。
首先需要明确十进制转为二进制的算法:将所需转化的数除以2,所得余数为k1,将所得商再除以2,所得余数为k2…...重复步骤直到商为0;读数时从最后一个余数读起,即kn,k(n-1)…k2,k1;所得数便是转化成的二进制数(除二取余法)