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)
这是一个可以将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)
| 归档时间: |
|
| 查看次数: |
13842 次 |
| 最近记录: |