十进制转换成二进制(Decimal2Binary)算法

一、Decimal2Binary算法原理与实现

我们常使用的高级语言中, 都有能直接实现这个算法的方法体,不用额外写算法,比如 JAVA 中的 Integer.toBinaryString(int i),通过这条语句,很简单一行命令就能搞定进制的转换。通过这几天发表文章来看,印证了一个真理,知乎喷子并不比微博少,我估计发表这篇文章之后,肯定有人会说,都有这个方法了,还要写什么实现过程呀?,这么简单的东西,还要你来写,知乎又不是幼儿园? 对于这种人,我想说的是,出门右转不送。

libero教学方式主要是 “轻代码, 重思想”,有的时候为了方便和加深理解对象,代码可能用伪代码,对于一篇文章都看不完,就直接喷代码错误的,我想说的是,你如果不喜欢libero,请不要关注就是了,没必要喷,浪费你打字时间。当然 对于错误,libero也是欢迎大家指正,毕竟只有相互包容,相互学习,才能相互成长。

传统上,我们把10进制转换成2进制的方法,就是不断除2,然后把余数串联起来就是成功转换的2进制数。对于计算机来说,我们需要做的是把这个数学思想转换成编程思想即可。

如图不断除2 ,并取余数,然后串起来,形成101010的二进制数。

第1个余数 0

第2个余数 1

第3个余数 0

第4个余数 1

第5个余数 0

第6个余数 1

二、Decimal2Binary算法源码

#include <stdio.h>

int decimal2Binary(int n);

int main(int argc, char *argv[])
{
    int n;
    printf("Please Input dec Numbers:");
    scanf("%d",&n);
    printf("%d in decimal = %d in binary",n,decimal2Binary(n));

    return 0;
}

int decimal2Binary(int n){
    int temp;
    int i = 1;
    int binary = 0;
    while(n!=0)
    {
        temp = n%2;
        binary += temp*i;
        n/=2;
        i = i * 10;
    }
    return binary;
}

三、Decimal2Binary算法总结

关键代码:

        temp = n%2;              //取余数
        binary += temp*i;   //相加所有余数
        n/=2;               //取商
        i = i * 10;         //控制余数所在位数,个位,百位 ,千位...

读万卷书,不如撸万卷代码。看完代码,记得上鸡,上鸡!反复练习!反复练习!

您可能还喜欢...

想说点什么吗?

1 评论 在 "十进制转换成二进制(Decimal2Binary)算法"

提醒
avatar
匿名
游客
匿名

写的还可以,加油!