精华内容
下载资源
问答
  • 二进制转十进制简单算法
    2020-11-21 03:03:12

    二进制数转换成十进制数:二进制数从右向左每位数乘以2的次方(从0开始,从右向左依次+1),然后相加求和即可

    如:0101转成十进制为:1*20+0*21+1*22+0*23=1+0+4+0=5

    算法实现:

    #coding=utf-8

    b=raw_input("请输入一个二进制数:".decode("utf-8").encode("gbk"))

    sum=0

    for i in range(len(b)):

    sum+=int(b[len(b)-1-i])*pow(2,i)

    print u"转换成十进制数是:",sum

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

    十进制数转换成二进制数:十进制数除2取余,商继续除2取余,直到商为0,所有余数逆顺即可

    如:12转换成二进制是:1100

    12/2=6 ------ 0 第4位

    6/2=3 ------ 0 第3位

    3/2=1 ------ 1 第2位

    1/2=0 ------ 1 第1位

    算法实现:

    #coding=utf-8

    n=int(raw_input(u"请输入一个正整数:".encode("gbk")))

    res=[]

    res.append(str(n%2))

    while n/2!=0:

    n=n/2

    res.append(str(n%2))

    res.reverse()

    print u"转化为二进制是:","".join(res)

    更多相关内容
  • php二进制转十进制,十进制转进制算法 文件定义了两个转换函数,二进制转十进制函数,十进制转二进制函数,使用于一些特定需求的人,如有问题请私信我。
  • 十进制转二进制: 用2辗转相除至结果为1 将余数和最后的1从下向上倒序写 就是结果 例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 故...
  • 进制转换算法原理(二进制 八进制 十进制 十六进制),以前上学那会确实学过,长时间不用都忘了。
  • 代码如下:#include<stdio>#include<math.h>int change(int n,int *sum,int *m)//n为第n位,m总位数{ char c; if(c!=’#’) { *m=*m+1; change(n+1,sum,m);... printf(“请输入二进制数(‘#’开始
  • 二进制转换十进制 算法解析

    千次阅读 2021-03-06 16:26:56
    java里面是有进制间互换现成的方法的:public class十进制与各进制的相互转换 {public static voidmain(String[] args){//java已经实现的机制:十进制转换为二进制int decimal = 10;System.out.println("十进制数:"+...

    java里面是有进制间互换现成的方法的:

    public class十进制与各进制的相互转换 {public static voidmain(String[] args){//java已经实现的机制:十进制转换为二进制

    int decimal = 10;

    System.out.println("十进制数:"+decimal+",转换为二进制:"+Integer.toBinaryString(decimal));

    System.out.println("十进制数:"+decimal+",转换为八进制:"+Integer.toOctalString(decimal));

    System.out.println("十进制数:"+decimal+",转换为十六进制:"+Integer.toHexString(decimal));

    System.out.println("二进制数:"+"1010" +",转换为十进制:"+Integer.valueOf("1010", 2));

    System.out.println("八进制数:"+"12" +",转换为十进制:"+Integer.valueOf("12", 8));

    System.out.println("十六进制数:"+"a" +",转换为十进制:"+Integer.valueOf("a", 16));

    }

    }

    结果:

    十进制数:10,转换为二进制:1010十进制数:10,转换为八进制:12十进制数:10,转换为十六进制:a

    二进制数:1010,转换为十进制:10八进制数:12,转换为十进制:10十六进制数:a,转换为十进制:10

    但如果不取Integer的内含方法,我们要怎么实现进制之间的转换呢?

    下面针对二进制-->十进制实现其算法过程:

    一般思维:

    当问到二进制数转为十进制数,大多数人脑里第一反应的应该是这样一个逻辑过程:

    二进制数:1010

    十进制数:1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 =  8 + 0 + 2 +0 = 10

    按这个思路,java代码可以这样实现:

    方法一:

    public intbinaryToDecimal(String inMsg){int x = 0;int mul = 1;for(int i = inMsg.length()-1;i>0;i--){

    x+= mul*(inMsg.charAt(i)=='1'?1:0);

    mul*=2;

    }

    System.out.println(mul);returnmul;

    }

    好奇在网上也找了下其他实现方法:

    方法二:

    String radix = "1010";

    public intmethod(String radix){int x = 0;for(charc:radix.toCharArray())

    x= x*2 + (c=='1'?1:0);

    System.out.println(x);returnx;

    }

    对比以上两个方法,方法一和我们平常的思维是一致的,但是方法二就不大好理解了,略作思考后,发现可以这样理解:

    1、从for(char c:radix.toCharArray())这行代码可以看出,需要将待求解的二进制数转换为char数组;显然,当待求解二进制数为1010时,char数组即为:char[1,0,1,0],数组中有4个元素,那么也就是说for循环要循环运行4次。

    2、显而易见,for循环里面的算式组成部分的(c=='1'?1:0)目的就是为了拿到当前循环时对应二进制数组下标的值。

    如:第一次循环,拿到二进制数组下标为0的值:1

    第二次循环,拿到二进制数组下标为1的值:0

    第三次循环,拿到二进制数组下标为2的值:1

    第四次循环,拿到二进制数组下标为3的值:0

    3、算法:x = x*2 + (c=='1'?1:0) 的原理解析:前半部分x*2,是为了实现二进制数组元素的幂次相乘(之前的int x = 0其实实现了char[]数组的size()-1的作用),后半部分获取了下次进行幂运算的char数组的元素值。

    解析:

    第一次循环:看方法二的第三行代码:int x = 0;x初始值为0,就导致了for循环第一次循环时,运算为:0*2+1  ,即只会得到算式(c=='1'?1:0)的值,即二进制数组第一个元素的值:1 ;这时循环已经进行了1次,还剩3次,所以这里的1会在后面的3次循环里分别乘以2 , 即1*2*2*2;

    第二次循环:算式为: (0*2 + 1)*2 + 0  == 0*2*2 + 1*2 + 0  ,第一部分0*2*2不用管,因为这个是int x=0起作用用的, 第二部分是第一次循环时得到1的第一次幂运算1*2, 第三部分就是二进制数组下标为1的元素:0,也是下一次循环会进行幂运算的数。   这时我们发现总共的4次循环已经进行了2次,剩下2次,所以这里的下次幂运算值:0会在后面的2次循环里分别乘以2,即0*2*2;

    第三次循环:算式为: ((0*2 + 1)*2 + 0)*2 +1  == 0*2*2*2 + 1*2*2 + 0*2 +1  ,第一部分0*2*2*2不用管,第二部分是第一次循环时得到1的第二次幂运算1*2*2, 第三部分是第二次循环时得到0的第一次幂运算0*2,第四部分就是二进制数组下标为2的元素:1,也是下一次循环会进行幂运算的数。   这时我们发现总共的4次循环已经进行了3次,剩下1次,所以这里的下次幂运算值:1会在后面的1次循环里乘以2,即1*2;

    第四次循环:算式为: (((0*2 + 1)*2 + 0)*2 +1 )*2 +1 == 0*2*2*2*2 + 1*2*2*2 + 0*2*2 +1*2 + 0  ,第一部分0*2*2*2*2不用管,第二部分是第一次循环时得到1的第三次幂运算1*2*2*2, 第三部分是第二次循环时得到0的第二次幂运算0*2*2,第四部分是第三次循环时得到1的第一次幂运算1*2,第五部分就是二进制数组下标为3的元素:0,也是下一次循环会进行幂运算的数。   这时我们发现总共的4次循环已经进行了4次,剩下0次,

    所以本次运算就是整个算法的结果: 0*2*2*2*2   +   1*2*2*2   +   0*2*2   +   1*2   +   0  =  0 + 8 + 0 + 2 + 0  =  10 ,这样看是不是觉得很熟悉!没错,其实原理还是和方法一一样样的。

    啰嗦了点,希望能帮到你理解!:)

    展开全文
  • 如果我们⽤⼗进制去表⽰种群中的个体,并且如果设定种群规模为10个个体,那么很简单,只要在-3.0到12.1这个区间随机选择10个⾮重复的...遗传算法十进制转为二进制matlab代码,该段代码适合初学遗传算法的小白进行学习
  • 二进制转十进制算法

    千次阅读 2021-10-30 19:13:24
    2021年10月30号是本人第一次写csdn,通过这个平台学习到了许多知识,正所谓人人为我,我为人人,今天来和大家来分享一下c语言的二进制转十进制算法二进制由两个数(0与1)构成的,如1001、1000、1100、1110...

             2021年10月30号是本人第一次写csdn,通过这个平台学习到了许多知识,正所谓人人为我,我为人人,今天来和大家来分享一下c语言的二进制转十进制的算法!

     

           二进制由两个数(0与1)构成的,如1001、1000、1100、1110、1111等等,他们所对应的十进制的数字是9、8、12、14、15。那么是怎么计算的呢??我们以1001来说明,1001是由4个数字组成的,而二进制是从右往左数,从0开始数,我们看图!

     

     

     

     

          我们计算的方式呢!是看哪个位置上有1开始计算(计算的顺序是从右往左开始),如图0对应的1与3对应的1就是我们要计算的,那么图上的0对应1,那么就是2的零次方、对应3的就是2的三次方,2的零次方等于1,2的三次方就等于8,然后进行相加就是1+8=9!1111、1010都是如此!

            那么我们知道二进制转换10进制的原理了,我们就可以通过次方法来解决c语言的进制转换问题!如图

     


    #include<stdio.h>
    #include<string.h>
    int main(){
    	char a[10];/*不超过10个数字的二进制!!*/ 
    	int c=0,sum=0,m;
    	printf("输入一串二进制数0或者1!");
    	gets(a);/*gets表示输入一个字符到数组*/ 
    	int b=strlen(a);/*定义一个变量b,来存放数组的长度(strlen是来计算数组的元素)!*/ 
    	for(int i=0;i<b;i++){
    		m=1;/*定义一个m的变量是来累乘的一个定值1;*/ 
    		if(a[i]=='1'){/*这里做一个判断!数组里如果有是1的元素,
    						我们就把他取出来计算,等于0则不管!*/ 
    			for(int j=1;j<=b-i-1;j++)/*j<=b-i-1,(算法的核心)由i的变化而去控制b-1的范围!b-1是因为二进制是从0开始算的,
    									j是从1开始的,所以要减去一个1,以上是控制累乘的次数,如果是2的三次方。
    									就循环3次(2*2*2),此时得出2的三次方等于8,如果循环退出,
    									则m的值返回初始的值1,不进行累乘,然后sum加1!*/ 
    			m*=2;
    			sum+=m;
    		}
    	}
    	 printf("%d",sum);
    	 return 0;
    }

                                                                                                                    如有不足之处还请指正!

                                                                                                                                          谢谢大家!

    展开全文
  • 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码...二进制转换十进制公式:abcd.efg(2)=d*2^0+c*2^1+b*2^2+a*2^3+e*2^-1+f*2^-2+g*2^-3(10)例如二进制数据110.11,其权的大小顺序为2^2、2^1、2^0...

    二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。二进制数据也是采用位置计数法,其位权是以2为底的幂。

    二进制转换十进制公式:

    abcd.efg(2)=d*2^0+c*2^1+b*2^2+a*2^3+e*2^-1+f*2^-2+g*2^-3(10)

    例如二进制数据110.11,其权的大小顺序为2^2、2^1、2^0、2^-1、2^-2。对于有n位整数,m位小数的二进制数据用加权系数展开式表示,可写为:

    (a(n-1)a(n-2)…a(-m))2=a(n-1)×2^(n-1)+a(n-2)×2^(n-2)+……+a(1)×2^1+a(0)×2^0+a(-1)×2^(-1)+a(-2)×2^(-2)+……+a(-m)×2^(-m)

    二进制数据一般可写为:(a(n-1)a(n-2)…a(1)a(0).a(-1)a(-2)…a(-m))2。

    注意:

    1、式中aj表示第j位的系数,它为0和1中的某一个数。

    2、a(n-1)中的(n-1)为下标,输入法无法打出所以用括号括住,避免混淆。

    3、2^2表示2的平方,以此类推。

    二进制转为十进制计算方法举例

    二进制转为十进制的时候,先把二进制从高位(最左边的“1”)开始按从上到下的顺序写出 ,第一位就是最后的商 “2÷2 = 1 余0 “,余数肯定是加零。其他位数如果有”1“(原来的余数),就先乘以”2“再加”1“。

    下面就是从第一位开始乘以2加余数的方法算回去

    例如 100101110

    1…………0x2+1=1…………余数为1

    0…………1x2+0=2………… 余数为0

    0 …………2x2+0=4 ………… 余数为0

    1 …………4x2+1=9……………… 余数为1

    0…………9x2+0=18 ……………… 余数为0

    1 …………18x2+1=37 …………余数为1

    1…………… 37x2+1=75…………余数为1

    1………………75x2+1=151………… 余数为1

    0………………151x2+0=302 ………… 余0

    所以得到十进制数302

    另:1*2^8+0*2^7+0*2^6+1*2^5+0*2^4+1*2^3+1*2^2+1*2^1+0*2^0=302

    展开全文
  • 二进制十进制转换史上最牛逼算法!!

    万次阅读 多人点赞 2020-07-27 11:34:05
    十进制转二进制 相信学过计算机的同学一定对二进制不陌生,计算机底层的通讯就是二进制嘛!二进制由0和1组成,那么怎么快速的对一个十进制数转换成二进制数呢? 最古老的方法大家还记得怎么转换吗?比如35这个十进制...
  • 二进制转十进制 8421运算法

    千次阅读 2021-12-10 12:33:55
    十进制 二进制 1 0001 2 0010 4 0100 8 1000 16 0001 0000 32 0010 0000 64 0100 0000 128 1000 0000 256 0001 0000 0000 我发现除 1之外十进制数值都是2的次方 2^1 = 2 2^2 = 4 2^3 = 8 16 ...
  • 本文给大家介绍的是一则使用C++实现读入二进制数并转换为十进制输出的代码,实现起来其实非常简单,C++本身就提供了二进制类库的,大家看代码吧,简单又实用。
  • JAVA:实现二进制转十进制算法(附完整源码)
  • 二进制转十进制计算方法

    万次阅读 2018-11-22 12:28:44
    口诀: 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 ........ 11111111 (2) 从右往左数平方 0开始 =1x20+1x21+1x22+1x23+1x24+1x...
  • python:实现二进制转十进制算法(附完整源码)
  • 二进制如何转十进制?二进制转换十进制公式二进制转换为十进制的简便方法。原来方法:从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如: 01101011转十进制:第0位:1乘...
  • 主要介绍了C语言十进制转二进制代码实例,并且转换后会统计二进制1的个数,实例简单明了,需要的朋友可以参考下
  • 用较为精简的方式,实现将二进制数转换成十进制数: 1 --> 1 10 --> 2 100 --> 4 … 转换函数如下: int change(int base2) { int temp = 1; int base10 = 0; while(base2) { base10 += temp *(base...
  • 无论是与传统汇编语言子程序,还是与使用sprintf()函数的程序相比,快速算法都有很大的速度优势;是一种针对8位机的创新算法,具有很强的工程实用性,值得推广应用。
  • 主要介绍了C# 进制转换的实现(二进制、十六进制、十进制),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 关于二进制十进制的方法(简单好学!)

    万次阅读 多人点赞 2021-07-17 11:32:43
    1.二进制转十进制。 **方法一:**二进制转为十进制要从右到左用二进制的每个数去乘以2的相应次方(次方从0开始),再将其每个数进行相加。 例如:1101转十进制:(1乘2的0次方)+(0乘2的1次方)+(1乘2的2次方)+(1...
  • Java十进制转二进制算法 一、编程思路 可以运用简单的数学的计算的方法。如下 这张图大家应该都不陌生,10(例子中的10)一直除以2,余数写在右面那一列,如果被整除右面写0,如果没有别整除,写他的余数,这样...
  • 十进制转二进制(多种算法
  • 十进制转二进制 十进制整数转二进制 十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到不能整除,然后再...
  • JAVA:实现十进制转二进制算法(附完整源码)
  • 二进制进制十进制十六进制之间的转换算法.pdf
  • 二进制转十进制,十进制转二进制算法
  • 今天有个朋友问了个问题,看到IP地址转二进制,顺便复习了一下,没想到发现了诀窍 首先要搞清楚IP地址的区间是0到255,共分为a,b,c,d,e五个区间, A 0-127 B 128-191 C 192-223 D 224-239 E 240-255 IP最大的...
  • 小数十进制转二进制

    千次阅读 2022-08-06 07:54:25
    小数部分十进制小数乘以 2,得出的积,然后把积的整数位取出,再用积的小数部分乘以 2,再把积的整数位取出,再用小数部分乘以 2,循环操作,直到小数部分为 0,或者遇到无限循环,取到你认为足够精度的小数为止,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 133,438
精华内容 53,375
热门标签
关键字:

二进制转十进制简单算法