十进制转二进制

时间:2022-01-22 20:56:23

这个问题随便百度就能查到,为了加强巩固,我在简述下。

问题描述:

编写一个函数将一个十进制整数转换成二进制形式。


算法:

奇数的二进制形式的最后一位一定是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);

}