如何计算一个数字在k进制表示中第i位的值?

6
什么是计算一个数字的k进制表示中第i位的值的好算法?
例如:
对于函数bitval(int k, int i, int n):
bitval(5, 4, 9730) = 2,因为在数字9730(即302410)的5进制(即五进制)表示中,从右往左数第4位是2。

你的问题标题中的“t”是什么意思? - Oliver Charlesworth
@Oli:不好意思,我刚才点了“提交”按钮太早了…… - Frank
@Kerrek:我不明白你的意思。n是一个数字,例如9730,而不是字符串表示。不过如果你真的是指函数应该_返回_一个字符串,例如如果k=16(十六进制表示),则应该返回“f”,那么你是有道理的。 - Frank
@Frank:抱歉,我误解了。我以为你想要在特定进制的字符串表示中找到二进制数字。我认为你的问题应该只是说“计算第i个数字”,这是更常见的术语。“位”实际上是指“二进制数字”。 - Kerrek SB
@Frank:谢谢,已将“bit”更改为“digit”。 - Frank
2个回答

5

Something like:

(n / (k ** i)) % k

可以使用 ** 表示乘方操作符,/ 表示整数(截断)除法。如果您想从右侧开始以1为起始数字对数字进行编号,而不是从0开始,可以使用 (i-1)


-2

朴素算法如下:

  1. 计算 nk 进制表示。这可以通过重复除法和模运算来实现。
  2. 返回该表示中的第 i 位数字。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接