【发布时间】:2019-01-23 15:24:45
【问题描述】:
基本上我想学习如何将十进制转换为二进制的算法,我发现了这个:
int convert(int dec)
{
if (dec == 0)
{
return 0;
}
else
{
return (dec % 2 + 10 * convert(dec / 2));
}
}
它工作得很好,但我无法理解dec % 2 + 10 * convert(dec / 2)。您能否将其转换为具有基本数学知识的人可以理解的方式?例如先执行什么方法,二进制dec = 50怎么变成110010?
仅供参考:我可以这样做,这样:50=(2^5=32)+(2^4=16)+(2^1)=50
提前致谢。
【问题讨论】:
-
这不是转换成二进制,而是转换成看起来像二进制的十进制。是的,它使用递归。
-
(ec) 注意这段代码。这段代码教给你一个非常混乱的、最终错误的教训。例如,此代码似乎将十进制数 5 转换为十进制数 101。这种看起来类似于十进制到二进制的转换,但实际上并非如此。
-
@SteveSummit 感谢您向我提供这方面的信息,您能否将我引导至适当的课程或计算机使用什么算法将十进制转换为二进制?
-
对于一些示例输入(使用调试器或手动)遍历代码可能是最有意义的。
-
可能不是 Is there a printf converter to print in binary format? 的副本,但有很多相关性。
标签: algorithm math binary decimal