号码转换和数字访问?

时间:2011-12-13 06:03:37

标签: c++ types base

语言是c ++

我必须从0到n读取一些数据,理论上n可以是无穷大。基于n的值,我必须将数字从十进制更改为该基数,即使其基数为10000.因此,如果我读入5个数字,n = 5,我必须将它们转换为base5。

那就是说,我不知道如何进行转换,但我确信我可以阅读一些文章。但真正令我担忧的是,当我转换为n基数可能是什么类型,我的结果将存储在数组中?长?

一旦我在一些数组中获得转换后的数字,我将如何访问每个数字中的每个数字以便稍后进行操作?

感谢。

2 个答案:

答案 0 :(得分:1)

基本上,你要对一个数字执行的大多数操作都是基本不变的。这意味着您可以添加/ sub / mul / div(甚至执行电源/根/日志操作)两个数字,甚至不知道它们的基数。
想一想,当它添加两个无符号的整数时,计算机没有什么特别的,即使你真正使用的是一个32位的base-2数。

您可以使用整数(或您需要的任何数据类型)进行到期,并在显示期间转换基数。

答案 1 :(得分:0)

从小数到基数的转换由除法/模数完成。 x是十进制数,b是目标基数。

  1. r = x%b
  2. y =(x-r):b
  3. 将x替换为y并从1开始重复,直到y变为0
  4. 结果是r,自下而上
  5. 在下面,你必须为r,i中的数字创建一个std::map替换模式。即对于基数16,一些条目将是10 -> A, 11 -> B。这意味着,您必须考虑非常大的n的表示形式。

    BTW:考虑一本关于编程101的书,将十进制转换为bin / oct / hex是总是 explaininend,并且很容易适应其他基础。