C语言实现十进制转化二进制

C语言下简单实现十进制数转化为二进制

因为自己现在能力有限,所以只能简单的实现此功能,并没有代码上的优美性可言,见谅哈哈

自己今天刚敲完的程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
int arr1[30];
int count=0;
int a = 0;
int main()
{
scanf_s("%d", &amp;a);
for(int i=0;a!=0;i++)
{
arr1[i] = a % 2;
a /= 2;
count++;
}
for (; count &lt; 30; count++)
{
arr1[count] = 0;
}
printf("该数转化为二进制为:");
for (int i = 30; i &gt;0 ; i--)
{
printf("%d", arr1[i]);
}
printf("\n奇数位二进制输出为:");
for (int i = 30; i &gt;= 0; i -= 2)
{
printf("%d", arr1[i]);
}
printf("\n偶数位二进制输出为:");
for (int i = 29; i &gt; 0; i -= 2)
{
printf("%d", arr1[i]);
}
printf("\n");
return 0;}

上面的实例是为了简单实现输出一个整数(十进制)所对应二进制奇偶位的二进制数,其中很重要的一步就是为了实现十进制到二进制的转换,自己遇到了好几次,终究还是不熟所以特地记录在博客里,以警醒哈哈。

因为前部分第一存放二进制的数组有30位(够大了2333),所以输入一个十进制数后,数组后几个,也就是二进制高位全部补0,所以用了这段代码:

1
2
3
4
for (; count < 30; count++)
{
arr1[count] = 0;
}

而十进制转二进制的数学方法是,给数除二取余,直到余数为0,再把所有余数按倒序排放(根据这个特点其实可以看出可以采用栈实现此功能),即为所求二进制数。

十进制转二进制具体实现部分如下:
1
2
3
4
5
6
7
8
9
10
for(int i=0;a!=0;i++)
{
arr1[i] = a % 2;
a /= 2;
count++;
}
for (; count &lt; 30; count++)
{
arr1[count] = 0;
}