1001_s = 19684_10 求解 S in 并说明基数
1001_s = 19684_10 solving for S in and stating the base
这是一道作业题,我不想要答案,我只想参考如何解决类似的问题。我相信它解释了我的课本,"Computer Organization & Architecture: Themes and Variations",但我目前买不起课本。
问题如下:
For each of the following numbers, state the base in use; that is,
what are the values of r
, s
, and t
?
25_r = 23_10
1001_s = 19684_10
1011_t = 4931_10
我知道这类似于求解方程式。我猜我必须找到 r
、s
和 t
,它们将是与十进制数字相匹配的特定基数。
我试着在网上搜索类似的问题,但我不确定要搜索什么,所以我不知道从哪里开始求解这些方程式。
从以 10 为基数的四分之一(或任何地方)开始,二分查找应该适用于半高效。
转换为基数 10 相当简单,所以每次进行常规二分查找时只需猜测并检查,如果数字太大则基数太大。如果数字太小,则基数太小。
从基数b转换为基数10的过程是将位置k的每个数字相乘(从右到左,开始在 0) 通过 b^k.
我不会给出所有答案,但是对于基数 s 中的 25,它是 2 * s^1 + 5 * s^0 = 23
减少到 2 * s + 1 = 23
或 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;
}
我只是认为这对 math.stackexchange.com 有好处,因为可以对乳胶答案进行编码。
无论如何,我认为这是一个有趣的问题。
基数 b 中的数字 n,具有数字 a_0,...,a_k,其中 a_0 是最右边的数字,是
n=从 i=0 到 k 的总和:a_i*b^i
这里,a_i 表示下标索引为 i.
所以,为了解决这个问题,我为 a_i 插入了你的第一个例子:
1*b^3 + 1*b^0 = 19684
=>b^3 + b = 19684
=>b*(b^2 + 1) = 19684
现在这是三次多项式。
我个人无法通过分析来解决,尽管我知道有 cardano 公式可以解决这个问题。对于更长的数字,您将拥有更高阶的多项式,这可以由人类猜测或使用计算机来解决。
祝你好运!
这是一道作业题,我不想要答案,我只想参考如何解决类似的问题。我相信它解释了我的课本,"Computer Organization & Architecture: Themes and Variations",但我目前买不起课本。
问题如下:
For each of the following numbers, state the base in use; that is, what are the values of
r
,s
, andt
?
25_r = 23_10
1001_s = 19684_10
1011_t = 4931_10
我知道这类似于求解方程式。我猜我必须找到 r
、s
和 t
,它们将是与十进制数字相匹配的特定基数。
我试着在网上搜索类似的问题,但我不确定要搜索什么,所以我不知道从哪里开始求解这些方程式。
从以 10 为基数的四分之一(或任何地方)开始,二分查找应该适用于半高效。
转换为基数 10 相当简单,所以每次进行常规二分查找时只需猜测并检查,如果数字太大则基数太大。如果数字太小,则基数太小。
从基数b转换为基数10的过程是将位置k的每个数字相乘(从右到左,开始在 0) 通过 b^k.
我不会给出所有答案,但是对于基数 s 中的 25,它是 2 * s^1 + 5 * s^0 = 23
减少到 2 * s + 1 = 23
或 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;
}
我只是认为这对 math.stackexchange.com 有好处,因为可以对乳胶答案进行编码。
无论如何,我认为这是一个有趣的问题。
基数 b 中的数字 n,具有数字 a_0,...,a_k,其中 a_0 是最右边的数字,是
n=从 i=0 到 k 的总和:a_i*b^i
这里,a_i 表示下标索引为 i.
所以,为了解决这个问题,我为 a_i 插入了你的第一个例子:
1*b^3 + 1*b^0 = 19684
=>b^3 + b = 19684
=>b*(b^2 + 1) = 19684
现在这是三次多项式。
我个人无法通过分析来解决,尽管我知道有 cardano 公式可以解决这个问题。对于更长的数字,您将拥有更高阶的多项式,这可以由人类猜测或使用计算机来解决。
祝你好运!