题目:
输入一个十进制的整数,输出它的二进制形式。
例如:
输入:50
输出:110010
解题思路:
要实现将十进制的整数转换为二进制的形式,我这里模拟除2取余法的操作来进行实现。
除2取余法是通过连续将十进制数除以2,并记录每次的余数,最后将这些余数逆序进行排列,从而得到二进制数的方法。
下面给出一个示例过程:
假设给定一个十进制整数为N,要求输出其二进制形式。
1、计算N/2,得到商(假设为Q1)和余数(假设为R1)。
2、计算Q1/2,得到商Q2和余数R2。
3、重复步骤2,直到商为零结束。
4、将每一次记录的余数逆序排列,即为十进制整数N的二进制形式。
程序代码:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a;
printf("请输入一个整数:");
scanf("%d",&a);
int b[32];//存储产生的二进制位
int j = 0, i = 0;
do
{
b[i]= a % 2;//取余
a = a / 2 ;//更新a的值为取余操作中的商
i++;
}while(a != 0);//当商为零时,代表已经除尽
printf("该整数的二进制表示为:");
for (j = i-1; j >= 0 ; j--){//逆向输出二进制位
printf("%d",b[j]);
}
putchar('\n');
return 0;
}
运行结果:
请输入一个整数:55863
该整数的二进制表示为:1101101000110111
请输入一个整数:25536
该整数的二进制表示为:110001111000000