base 13 - Hitchhiker的银河系指南

7 binary

我知道13号基地不实用.然而,我再次查看了The Hitchhiker的银河系指南,因为今天的日期是10/10/10 = 42二进制.(你知道,生命,宇宙和一切的终极问题的答案)需要760万年的深思熟虑来计算和检查答案,结果证明是42.不幸的是,终极问题本身是未知的.无论如何,他说""六点九分.四十二.""就是这样.这就是全部.""我一直认为宇宙的根本错误"

我的问题是基数13 = 42时6 x 9怎么样?

我知道如何转换基数10,1,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).
Run Code Online (Sandbox Code Playgroud)

Lie*_*yan 7

这是一个可以将base-10数转换为base-13的方法:

从数字9x6 = 54开始,我们希望在基数13中找到相当于54的数字.

54 / 13 = 4 remainder 2
4  / 13 = 0 remainder 4
Run Code Online (Sandbox Code Playgroud)

我们将自下而上的剩余部分连接起来,42.

一个更通用的算法,以十进制数N开头,我们想在基数B中找到N的等价物.

N  / B = a1 remainder r1
a1 / B = a2 remainder r2
....
an / B = 0 remainder rn
Run Code Online (Sandbox Code Playgroud)

并连接数字,自下而上: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))
Run Code Online (Sandbox Code Playgroud)

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 ''
Run Code Online (Sandbox Code Playgroud)

更一般地说,如果你有一个表示基数为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))
Run Code Online (Sandbox Code Playgroud)