这个问题随便百度就能查到,为了加强巩固,我在简述下。
问题描述:
编写一个函数将一个十进制整数转换成二进制形式。
算法:
奇数的二进制形式的最后一位一定是1,而偶数的二进制数的最后一位是0。所以,对于数值n,其二进制数的最后一位是n%2,因此计算
出的第一个数字恰好是需要输出的最后一位数字。
为了得出下一个数字,需要把原值除以2。如果此时得出的数值是偶数,则下一个二进制位的数值是0;若得出的数值为奇数,则下一个
二进制位的数值就是1.
此算法就是短除法。实质是二进制,每次除以二时,相当于二进制右移一位。
源代码:
#include<stdio.h>
void to_binary(unsigned long n);
int main()
{
unsigned long number;
printf("Enter an integer(q to quit):\n");
while(scanf("%ul",&number) == 1)
{
printf("Binary equivalent: ");
to_binary(number);
putchar('\n');
printf("Enter an integer(q to quit):\n");
}
printf("Done.\n");
return 0;
}
void to_binary(unsigned long n)
{
int r;
r = n % 2;
if(n >= 2)
to_binary(n/2);
putchar('0'+ r);
}