c++ - 使用分而治之法将二进制转换为十进制

标签 c++ binary decimal

我目前被困在一项任务中,几乎到处都在寻找我正在尝试做的事情的线索。

赋值很简单,我们将得到一个 vector 形式的二进制数(例如 [1,1,1,1],我们将计算该数的十进制形式并放回相同的 vector 形式(例如 [1,5] 用于回答上一个示例)。

虽然起初我认为这是一个简单的解决方案,但我很快发现我们要使用这种方法来计算非常大的数字,例如二进制中的 300 个 1。

现在,在我意识到我试图直接计算它的错误之后,我很快找到了“分而治之”方法的想法,但我没有找到一个地方给出如何在这个中使用它的精确示例上下文。

由于这是一项作业,我宁愿提出一个实际解释概念并提供示例的答案,而不是直接的代码块。

提前谢谢你,

马修

最佳答案

编写一个以 10 为基数的数学引擎。

它应该包括与另一个以 10 为底的数字的加法,以及与 int 的乘法。 (加倍就足够了)

遍历二进制数字,跟踪与该数字对应的以 10 为底的数字。

有条件地积累。

唯一困难的部分是 base 10 数学系统,其他一切都需要 3 到 8 行代码。

遗憾的是,能够更有效地做到这一点的简单方法非常有限,因为二进制数的任何数字都可以影响等效的以 10 为底的数字的任何数字。可能有奇特的方法,但对于 300 位数字你不应该费心。

关于c++ - 使用分而治之法将二进制转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18879222/

相关文章:

c++ - 如何在cpp中返回十进制值

python - 有什么办法可以让整数被归类为没有 .0 的整数,而 float 被归类为 float 吗?

c++ - 我应该在启动时或第一次使用它们时设置全局变量值吗? C++

c++ - 如何确定子线程总数?

c++ - OpenCV 和 C++;比较两个二进制图像并获得输出(结果)

java - ArrayList java 中的十进制到二进制

c# - 是否有没有舍入误差的数学除法方法?

c++ - 静态初始化 C++,未设置值

c++ - 使用概念的模板类方法特化

algorithm - 查找具有相同 1 位数的下一个较小数字的有效方法