【发布时间】:2015-03-14 22:55:36
【问题描述】:
我刚刚实现了一个任意基数转换器,我有一个好奇的时刻:是否有一种可通用的基数转换方法适用于任何可能的基数输入范围(不包括基数 0),并且不使用中间值更方便的基地?
在编写一个基数转换函数时,尤其是从一个任意基数到另一个任意基数的函数时,可以通过首先将数字转换为十进制,然后将其重新转换为目标数字来轻松实现。如果你在基数 [1,10] 的范围内,你也可以很容易地绕过中间值步骤。
但是,当您扩大范围时,它似乎变得更加棘手。考虑以下示例(素数似乎可能会缩小可能的方法范围?):
- 基数 7 到基数 33
- 基数 -3 到基数 13
- 基数 -16 到基数 16
我在这里或 Google 其他地方没有看到太多关于这个问题的讨论;大多数要么具有较窄的碱基范围,要么使用了中间值。有什么想法吗?
【问题讨论】:
-
首先显示数字 42(十进制)在基数 0 和基数 -3 中的样子,您认为。这没有多大意义。
-
转换为十进制?可能是计算机中的二进制文件,对吧?无论如何,当然,您可以从任意基数转换为您想要的任意基数。只是计算机以二进制形式工作,让您的生活更轻松。
-
有可能,您需要定义任意基数和执行基数转换所需的相应基本运算(乘积、除法、模数)。
-
base -3 到底是什么?!
标签: c++ base-conversion