今天在App Inventor中发现个组件能够将十进制转换成二进制和十六进制,于是我用这个东西做了个十进制转换器。

十进制转换器:能够将输入的十进制数转换成二进制,八进制,十六进制。[只支持正整数]
下载地址:http://pan.baidu.com/s/1eSofIFK

问题来了,程序中并没有内置十进制转八进制的组件,怎么办,怎么办? 自己动手丰衣足食!!!

首先先百度下看看简单的转换方法的实例
例一:假设十进制数为1000,则八进制数位1750,过程如下:
1000/8=125,余数为0;
125/8=15,余数为5;
15/8=1,余数为7;
1/8=0,余数为1;
你从下往上看这些余数,顺序写出,就是答案1750,要注意的是最后一定要除到0为止,也就是最后一步1/8=0,一定要除到0.

例二:十进制的534,八进制为1026,过程为:
534/8=66,余数为6;
66/8=8,余数为2;
8/8=1,余数为0;
1/8=0,余数为1;
仍然是从下往上看这些余数,顺序写出,答案为1026

看了两个例子大家应该看出来如何计算了吧!那么转换成程序的逻辑又是如何呢?

十进制转八进制

[我的变量:指的是每次相除后的整数结果,如例一中的125,15,1,0。结果:是将每次循环后的余数拼接,最终目标就是转换后的正确答案。就低取整:就低取整就是忽略掉余数。拼字串:就是拼接两个字符比如5和0拼接结果就是50,a和b拼接结果就是ab,余数:就是只要这个结果的余数部分]

这里我们将“文本输入框1的显示文本”带入例一的1000来计算下结果是否正确,
“我的变量” =1000/8就低取整=125;
“结果” =1000/8取余数=0;

因为“我的变量”是“125”不等于“0”所以继续执行;
“结果” =“我的变量”/8取余数,再拼接上一个“结果”=5拼接0=50;
“我的变量” =上一个“我的变量”/8就低取整=125/8=15;

这时因为“我的变量”是“15”不等于“0”所以继续循环执行;
“结果” =“我的变量”/8取余数,再拼接上一个“结果”=7拼接50=750;
“我的变量” =上一个“我的变量”/8就低取整=15/8=1;

这时因为“我的变量”是“1”不等于“0”所以继续循环执行;
“结果” =“我的变量”/8取余数,再拼接上一个“结果”=1拼接750=1750;
“我的变量” =上一个“我的变量”/8就低取整=1/8=0;

这时“我的变量”等于“0”所以跳出循环;

至此,当前“结果”变量返回的值则是正确答案1750。

版权属于:泽泽社长
本文链接:https://blog.zezeshe.com/archives/decimal-converter.html
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!