首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从一种数制转换成另一种数制后有多少位?

从一种数制转换成另一种数制后有多少位?
EN

Stack Overflow用户
提问于 2009-06-07 16:57:14
回答 7查看 4K关注 0票数 2

主要问题是:有多少位数?

让我解释一下。我有一个二进制的数字: 11000000,十进制数是192。

转换为十进制后,它将有多少位(二进制)?在我的例子中,它是3位数。但是,这不是问题。我在网上搜索,找到了一个整数部分的算法和一个分数部分的算法。我不太理解它们,但(我认为)它们是有效的。

当从二进制转换为八进制时,这更容易:每3位给你一个八进制的数字。十六进制也是如此:每个4位=1个十六进制数字。

但是,我很好奇,如果我有一个P数制的数字,并且想把它转换成Q数制,该怎么办呢?我知道怎么做(我想,我知道:),但是,首先,我想知道在Q系统中需要多少位(你不,我必须预先分配空间)。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-06-07 17:23:46

在我之前的回答中有一个错误:看看Ben Schwehn的评论。很抱歉造成混乱,我在下面找到并解释了我在之前的回答中所犯的错误。

请使用Paul Tomblin提供的答案。(重写为使用P、Q和n)

代码语言:javascript
运行
复制
Y = ln(P^n) / ln(Q)
Y = n * ln(P) / ln(Q)

因此,Y(向上舍入)是您在系统Q中需要的字符数,以表示您可以在系统P中以n个字符编码的最大数字。

我没有答案(这不会转换数字并在临时变量中占用那么多空间)来获得给定数字1000(bin) = 8(dec)的最小值,而您可以使用此公式保留2个小数位。

如果临时内存使用不是问题,您可以欺骗并使用(Python):

代码语言:javascript
运行
复制
len(str(int(otherBaseStr,P)))

这将为您提供将基数P中的数字转换为字符串(otherBaseStr)所需的小数位数。

旧的错误的答案:

如果您在P数制中有一个长度为n的数字,那么您可以计算n个字符中可能的最大数字:

代码语言:javascript
运行
复制
P^(n-1)

为了在数字系统Q中表示这个最大的数字,你需要使用对数(因为它们是指数的倒数):

代码语言:javascript
运行
复制
log((P^(n-1))/log(Q)
(n-1)*log(P) / log(Q)

例如,二进制形式的11000000是8个字符。要将其转换为Decimal,您需要:

代码语言:javascript
运行
复制
(8-1)*log(2) / log(10) = 2.1 digits (round up to 3)

错误的原因

N个字符中可能的最大数字为

代码语言:javascript
运行
复制
(P^n) - 1

代码语言:javascript
运行
复制
P^(n-1)
票数 5
EN

Stack Overflow用户

发布于 2009-06-07 17:05:43

在基数b中写入n取上限(对数基数b (n))位。

您注意到的比率(八进制/二进制)是对数底8 (n) /对数底2 (n) = 3。

(从记忆中看,它会坚持下去吗?)

票数 6
EN

Stack Overflow用户

发布于 2009-06-07 17:09:20

如果你有一个以B为底的X位数字,那么可以表示的最大值是B^X-1,所以如果你想知道它在以C为底的数字中可能需要多少位,那么你必须找到C^Y - 1至少和B^X - 1一样大的数字Y,方法是取B^X -1以C为底的对数。并且由于以C为底的数的对数( log )与该数的自然对数(ln)除以C的自然对数相同,这就变成:

代码语言:javascript
运行
复制
Y = ln((B^X)-1) / ln(C) + 1

由于ln(B^X)是X* ln(B),这可能比ln(B^X-1)的计算速度更快,并且足够接近正确的答案,因此重写为

代码语言:javascript
运行
复制
Y = X * ln(B) / ln(C) + 1

把它转换成你最喜欢的语言。因为我们去掉了"-1",所以在某些情况下,我们可能会比您需要的多一个数字。但更好的是,您可以预先计算ln(B)/ln(C),并将其乘以新的“X”,然后您尝试转换的数字的长度发生变化。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/962301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档