✅ 操作成功!

零的零次方

发布时间:2023-06-04 作者:admin 来源:文学

零的零次方

零的零次方

-建筑材料学报

2023年2月16日发(作者:大学班级工作总结)

⼆进制转⼗进制算法

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

#include

intmain(){

chara[10];/*不超过10个数字的⼆进制!!*/

intc=0,sum=0,m;

printf("输⼊⼀串⼆进制数0或者1!");

gets(a);/*gets表⽰输⼊⼀个字符到数组*/

intb=strlen(a);/*定义⼀个变量b,来存放数组的长度(strlen是来计算数组的元素)!*/

for(inti=0;i

m=1;/*定义⼀个m的变量是来累乘的⼀个定值1;*/

if(a[i]=='1'){/*这⾥做⼀个判断!数组⾥如果有是1的元素,

我们就把他取出来计算,等于0则不管!*/

for(intj=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);

return0;

}

如有不⾜之处还请指正!

谢谢⼤家!

👁️ 阅读量:0