-1

这是一个家庭作业问题,我不想要解决方案,我只想参考如何解决类似的问题。我相信它解释了我的课程教科书“计算机组织与架构:主题和变化”,但我目前买不起这本教科书。

这是问题:

对于以下每个数字,请说明使用的底座;也就是说rs、 和的值是t多少?

  1. 25_r = 23_10

  2. 1001_s = 19684_10

  3. 1011_t = 4931_10

我认识到这类似于求解方程。我猜我必须找到rs并且t它们将是与基数为十的数字匹配的特定基数。我尝试在网上搜索类似的问题,但我不确定要搜索什么,所以我不知道从哪里开始求解这些方程。

4

3 回答 3

0

从基数为 10 点的四分之一(或真正的任何地方)开始,二分搜索应该可以实现半高效。

转换为基数 10 相当简单,因此每次进行常规二进制搜索时只需猜测并检查,如果数字太大,则基数太大。如果数字太小,则基数太小。

于 2015-01-28T20:50:25.033 回答
0

从基数b转换为基数 10 的过程是将位置k(从右到左,从 0 开始)中的每个数字乘以b^k

我不会给出所有答案,但是对于 base s中的 25 ,它会2 * s^1 + 5 * s^0 = 23减少到2 * s + 1 = 23or 2 * s = 18。那么s = 9。

由于这是一个编程网站,我将输入一个伪代码程序来检查您的答案:

procedure base_b_to_ten(int[] n, int base) {
    int sum = 0;

    for(int k=0; k<n.length; k++) {
        sum = sum + pow(n[n.length - k], base);
    }

    return base;
}
于 2015-01-28T21:08:09.293 回答
0

我只是认为这对 math.stackexchange.com 有好处,因为可以编写乳胶答案。
无论如何,我认为这是一个有趣的问题。
以 b 为底的数字 n,其数字为 a_0,...,a_k,其中 a_0 为最右边的数字,
从 i=0 到 k 的 n=sum: a_i*b^i
这里,a_i 表示具有下标索引 i 的 a。
所以,为了解决这个问题,我插入你的第一个 a_i 示例:

1*b^3 + 1*b^0 = 19684  
=>b^3 + b = 19684  
=>b*(b^2 + 1) = 19684  

现在这是一个三次多项式。
我个人无法分析解决,尽管我知道有卡尔达诺公式。对于更长的数字,您将拥有更高次的多项式,这可以由具有良好猜测的人类或计算机来解决。
祝你好运!

于 2015-01-28T21:09:30.607 回答