我知道13号基地不实用。然而,我再次查看了“银河系漫游指南”,因为今天的日期是10/10/10 = 42。(你知道,生命,宇宙和万物的终极问题的答案)深度思考花了750万年来计算和检查答案,结果是42。不幸的是,终极问题本身是未知的。不管怎样,他说“”六乘九。四十二。“”就是这样。“这就是全部。”“我一直认为宇宙有根本性的问题。”
我的问题是,以13为基数的6 x 9是如何= 42的?
我知道如何转换基数10,2,16,8,但从基数10到基数13对我来说是一个谜。我知道在基数13中,6可能=6,9可能=9 S0,这只是在基数13中乘以的问题?
有人能解决这个问题吗?我找到了这个,但帮助不大
in base 13, 6 13 × 9 13 is actually 4213
(as 4 × 13 + 2 = 54, i.e. 54 in decimal is
equal to 42 expressed in base 13).发布于 2010-10-11 09:11:37
这是一种可以将基数10转换为基数13的方法:
从一个数字9x6=54开始,我们希望在基数13中找到与54相等的值。
54 / 13 = 4 remainder 2
4 / 13 = 0 remainder 4我们连接余数,从下到上,42。
一个更通用的算法,从十进制数N开始,我们希望在基数B中找到N的等价物。
N / B = a1 remainder r1
a1 / B = a2 remainder r2
....
an / B = 0 remainder rn并连接数字,自下而上: rn。..。r2。r1
Python中的迭代实现:
digits = '0123456789abcdefghijklmnopqrstuvwxyz'
def rebase(n, base=2):
''' Convert a positive integer to number string with base `base` '''
s = []
while n != 0:
n, rem = divmod(n, base)
s.append(digits[rem])
return ''.join(reversed(s))Python中的递归实现:
digits = '0123456789abcdefghijklmnopqrstuvwxyz'
def rebase(n, base=2):
''' Convert a positive integer to number string with base `base` '''
return rebase(n // base, base) + digits[n % base] if n != 0 else ''更一般地,如果您有一个字符串表示以N为基数的数字,并且您希望将其转换为表示以M为基数的数字的字符串:
digits = '0123456789abcdefghijklmnopqrstuvwxyz'
def rebase(orig, orig_base=10, target_base=2):
''' Convert a positive integer to number string with base `base` '''
num = 0
for i, n in enumerate(reversed(orig)):
num += digits.find(n) * (orig_base**i)
target = []
while num != 0:
num, rem = divmod(num, target_base)
target.append(digits[rem])
return ''.join(reversed(target))发布于 2010-10-11 09:19:56
这不是在不同的基数中多乘一个数字的问题,而是在那个基数中表示乘积的问题
让我们从一个非常简单的基础开始,一元,它只用1(甚至不是0)表示。
一元的6x9是111111 x 111111111。我们可以通过将一项中的所有项替换为另一项中的项来执行该计算。将九个1复制并粘贴六次
111111111111111111111111111111111111111111111111111111
当我们想要用更方便的基数来表示这个数字时,我们按照基数对这些数字进行分组。如果有足够的组对这些组进行分组,我们就对它们进行分组。然后我们用数字替换组的计数。我们将以十进制来表示
111111111111111111111111111111111111111111111111111111
^ ^ ^ ^ ^每个箭头是10个的一组,剩下4个,所以在十位处,我们放一个5,在一位处放一个4,54。
让我们对较小的基数执行相同的操作,这样我们就可以很好地了解如何泛化组的组:
1 111111111111111111111111111111111111111111111111111111
2 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
4 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
8 ^ ^ ^ ^ ^ ^
16 ^ ^ ^
32 ^我们可以分组五次。从1开始,2分组后没有剩余的1,所以第一个数字是0。当我们按4分组时,还剩下2个数字,所以下一个数字是1。当我们按8分组时,还有4个剩余数字,另一个1是下一个数字。当我们按16分组时,剩下8组。当按32分组时,剩下16组。我们不能把像64这样大的东西组成一组,所以32位以上的所有数字都是0。因此,二进制表示形式应该是
110110最后,基数13。这和基数10一样简单。
111111111111111111111111111111111111111111111111111111
^ ^ ^ ^一共有4组,每组13个。我们做完这4组后还剩下两位数。因此,当以13为基数表示时,6 x 9的乘积是'42‘
发布于 2010-10-11 09:29:18
答案42与基数13无关,它只是一个计算错误。
这个问题的答案很简单。这只是个笑话。它必须是一个数字,一个普通的,很小的数字,我选择了那个。二进制表示法,基数十三,藏传佛教和尚都是胡说八道。我坐在我的办公桌前,凝视着花园,想着'42号就够了‘。我把它打出来了。故事到此结束。
http://en.wikipedia.org/wiki/Answer_to_the_Ultimate_Question_of_Life,_the_Universe,_and_Everything#Answer_to_the_Ultimate_Question_of_Life.2C_the_Universe_and_Everything_.2842.29
https://stackoverflow.com/questions/3902918
复制相似问题