开发者社区> 问答> 正文

十进制转二进制快速算法

难啊

展开
收起
知与谁同 2018-07-18 17:07:59 8274 3
7 条回答
写回答
取消 提交回答
  • /// oc十进制转二进制 - (NSString *)decimalismToBinary:(NSInteger)num { NSString *result = @""; NSInteger temp = num; while (temp / 2 >= 0 && temp != 0) { NSString *part = [NSString stringWithFormat:@"%ld", temp % 2]; result = [NSString stringWithFormat:@"%@%@", part, result]; temp = temp / 2; } return result; }

    2022-04-07 20:27:48
    赞同 14 展开评论 打赏
  • 十进制整数转换为二进制整数十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

    例如上题42转为二进制就是101010.

    人类算数采用十进制,可能跟人类有十根手指有关。亚里士多德称人类普遍使用十进制,只不过是绝大多数人生来就有10根手指这样一个解剖学事实的结果。实际上,在古代世界独立开发的有文字的记数体系中,除了巴比伦文明的楔形数字为60进制,玛雅数字为20进制外,几乎全部为十进制。只不过,这些十进制记数体系并不是按位的。

    二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用1来表示“开”,0来表示“关”。

    2019-07-17 22:58:05
    赞同 11 展开评论 打赏
  • 12535
    #include <stdio.h>
    #include <string.h>
    int main(){
        int n,i=0,b[32];
        memset(b,0,sizeof(b));
        scanf("%d",&n);
        while(n){
            if(n&1)b[i]=1;
            i++;
            n>>=1;
        }
        i=31;
        while(!b[i])i--;
        while(i>=0)printf("%d",b[i--]);
        return 0;
    }

    -------------------------

    (42)10=(00101010)2.赶紧记住吧。应该写为(101010
    )2.

    2019-07-17 22:58:05
    赞同 11 展开评论 打赏
  • 将数字一直除以2,直至除到1 ,再将余数和最后的1从下向上倒着写就是结果
    2019-07-17 22:58:05
    赞同 12 展开评论 打赏
  • 阿里云开发者社区运营负责人。原云栖社区负责人。
    学计算机的朋友刚开始学习时都要接触进制之间的转换,二进制、十进制、八进制、十六进制等,这个是很枯燥的,转来转去就转蒙圈了,别蒙别蒙,今天咱们一个一个搞定,看看二进制和十进制之间如何相互转换的。

    方法/步骤
    转成二进制主要有以下几种:正整数转二进制,负整数转二进制,小数转二进制;
    1、 正整数转成二进制。要点一定一定要记住哈:除二取余,然后倒序排列,高位补零。
    也就是说,将正的十进制数除以二,得到的商再除以二,依次类推知道商为零或一时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零就OK咧。哎呀,还是举例说明吧,比如42转换为二进制,如图1所示操作。

    42除以2得到的余数分别为010101,然后咱们倒着排一下,42所对应二进制就是101010.如图2所示更直观的表达。

    计算机内部表示数的字节单位是定长的,如8位,16位,或32位。所以,位数不够时,高位补零,所说,如图3所示,42转换成二进制以后就是。00101010,也即规范的写法为(42)10=(00101010)2.赶紧记住吧。

    2、 负整数转换成二进制
    方法:先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一。还以42为例,负整数就是-42,如图4所示为方法解释。最后即为:(-42)10=(11010110).

    3、 小数转换为二进制的方法:对小数点以后的数乘以2,有一个结果吧,取结果的整数部分(不是1就是0喽),然后再用小数部分再乘以2,再取结果的整数部分……以此类推,直到小数部分为0或者位数已经够了就OK了。然后把取的整数部分按先后次序排列就OK了,就构成了二进制小数部分的序列,举个例子吧,比如0.125,如图5所示。

    如果小数的整数部分有大于0的整数时该如何转换呢。如以上整数转换成二进制,小数转换成二进制,然后加在一起就OK了,如图6所示。

    4、 整数二进制转换为十进制:首先将二进制数补齐位数,首位如果是0就代表是正整数,如果首位是1则代表是负整数。
    先看首位是0的正整数,补齐位数以后,将二进制中的位数分别将下边对应的值相乘,然后相加得到的就为十进制,比如1010转换为十进制,方法如图7所示。

    5、若二进制补足位数后首位为1时,就需要先取反再换算:例如,11101011,首位为1,那么就先取反吧:-00010100,然后算一下10100对应的十进制为20,所以对应的十进制为-20,方法如图8所示。

    6、将有小数的二进制转换为十进制时:例如0.1101转换为十进制的方法:将二进制中的四位数分别于下边(如图9所示)对应的值相乘后相加得到的值即为换算后的十进制。

    注意事项
    进制之间的转换虽然繁琐,但理解后也不难,但是需要经常温习,然后才不会弄混淆。
    2019-07-17 22:58:05
    赞同 11 展开评论 打赏
  • Nothing for nothing.

    十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。 

    而由二进制数转换成十进制数是把二进制数首先写成加权系数展开式,然后按十进制加法规则求和,这种做法称为“按权相加”法。

    十进制整数转换为二进制整数采用"除2取余,逆序排列"法。

    具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

    以235为例,转为二进制:
    235除以2得117,余1
    117除以2得58,余1
    58除以2得29,余0
    29除以2得14,余1
    14除以2得7,余0
    7除以2得3,余1
    3除以2得1,余1
    从得到的1开始写起,余数倒排,加在它后面,就可得11101011。

    2019-07-17 22:58:05
    赞同 11 展开评论 打赏
  • 这个时候,玄酱是不是应该说点什么...

    首先讲一下“权重”的概念,数字中某位的权重:2的(该位所在的位数(从右至左)-1)次方,比如:100的权重为:2^(1-1)=1 1的权重为:2^(2-1)=2,二进制转十进制:数字中所有位*本位的权重然后求和。

    比如将10101转化为十进制:10101=1*2^4+0*2^3+1*2^2+0*2^1+1*2^0=21

    十进制如何转二进制:将该数字不断除以2直到商为零,然后将余数由下至上依次写出,即可得到该数字的二进制表示,以将数字21转化为二进制为例。

    2.当商为零时,将余数由下至上依次写出,即为21的二进制表示。

    拓展资料:

    十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。 

    而由二进制数转换成十进制数是把二进制数首先写成加权系数展开式,然后按十进制加法规则求和,这种做法称为“按权相加”法。

    2019-07-17 22:58:05
    赞同 11 展开评论 打赏
滑动查看更多
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载