十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
我们还是以302来进行举例:
十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除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递减。
需要注意的是这里显示循环的次数是之前产生余数循环的次数,可以在最开始的产生余数循环内加一个变量专门计数,在我们显示循环的循环内循环制定的次数。