一、原理分析
本例使用掌控板模拟“短除法”求十进制数45的二进制值。十进制转二进制的短除法法则为:除二反向取余。
如上图所示,
45/2 = 22余1
22/2 = 11余0
11/2 = 5余1
5/2 = 2余1
2/2 = 1余0
1/2 = 0余1
以上结果,再反向取余数得:101101,即十进制数45的二进制值为:101101
二、mPython代码
接下来用mPython图形代码实现上述过程
1. 完整代码
2. 代码拆解
(1)定义变量num作为需要转换的十进制数值,本案例先设置固定数值。变量num的值在程序执行过程中是需要改变的。因此,定义变量t用来记录num的值,以便程序最后显示结果。
变量s是字符串类型数据,用于存放转换结果的逆序输出。列表my_list用来按顺序存放转换过程中余数的值。
(2)转换过程,将需要转换的数值num整除2的商和余数记录下来,分别用变量shang和yushu来表示,并将余数追加进入列表my_list,同时重新把整数商作为新的被除数num。直到整个式子商为0,最后再把商追加进入my_list列表。此时,整个my_list列表中按顺序存放着0、1序列的余数。
(3)把my_list列表倒序读取出来,以追加的方式存放再字符串s中。
(4)输出转换后的结果。
3. 程序效果