c++十进制转二进制_我的天!EV3还能这么玩!十进制转二进制程序

大家好,大飞来了!

之前突发奇想想做一个关于十进制转化成二进制的想法,在这里给大家讲解一下。

关于数字有多进制的,十进制、二进制、三进制、八进制、十六进制....等等。对我们最熟悉的莫过于十进制和二进制了,接下来给大家讲解下如何实现将十进制转化为二进制。

【1】十进制我们最熟悉,我在这里不多做解释,只说十进制怎么运算,例如302,可以看成从右往左以索引倒叙分别从0开始,进行注释。

bef6b84aba4b47a0bda925204d34430e

如图所示1

接下来我们用十进制开始进行运算,下行索引倒叙为十进制10的指数,数字作为乘数,然后进行相加。

bf1d7de166ab4b95b515257ca96bfd2b

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

我们还是以302来进行举例:

ea3a1c7aff10418c9fa9e4bc7ab7c98e

所以它的二进制就是100101110,将二进制转化回来也是同样的道理,只不过底数变成了2,我们看下:

7b008ce0d92c4552b0bf73bce8fb9a24

到这里我们基本十进制转化为二进制的原理理解清楚了。

【2】接下来我们进入到编程:

0ce0ef8fbd924ee0b6385189cc00fd90

1、产生数字:

在这里我们可以采用按键选取自己指定的数字num,大飞在这里优先建议大家采用这个方法,其次如果不想选数字,也可以随机产生

e8af9ac3ef024ec3998451764a78d801

图片2

2、运算选取的数字num使其除2直至为0

这里可以将除后的值再次给到num,因为除一次后num也没作用了可以当下次的商,哈哈对num就是这么无情。

其次就是取每次的模变量yu,运用高级运算里面的Modulo,把yu按照索引写入数组中,疯狂循环除。

直到!我们的商num的值小于1位置,或者小于等于0,都可以,这是一个触发条件。当条件触发后我们需要再次写入一次,相当于最后一次写入,因为最后一次运算程序先判断,但是我们还要余数,所以需要再次写入一次。

715882755861472e94528d58b9a98dd4
f90bd9dc4d8e44489dd4f269fa19730d

这里我们可以用一个声音来检测余数是否写入数组成功,防止数据溢出。

3、倒叙显示余数

目前我们已经把十进制数字产生,并且把余数储存至数组里面,接下来我们要做的就是把它显示出来,因为二进制的显示是以倒叙的形式显示的,所以我们拿到新出锅的余数数组需要倒叙显示。

方法有很多种:

这里大飞是用按照索引输出,但是显示出来从屏幕后方,0号索引值显示在x=150位置上,接下来1号索引显示主机递减,显示在130,110,90....以此类推,以20递减。

需要注意的是这里显示循环的次数是之前产生余数循环的次数,可以在最开始的产生余数循环内加一个变量专门计数,在我们显示循环的循环内循环制定的次数。

d287895635e9417fbb7f39b78dbcef54
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值