程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

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

balukai 2025-04-27 12:27:50 文章精选 1 ℃

大家好,大飞来了!

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

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

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

如图所示1

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

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

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

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

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

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

1、产生数字:

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

图片2

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

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

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

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

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

3、倒叙显示余数

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

方法有很多种:

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

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

Tags:

猜你喜欢

最近发表
标签列表