问题标签 [number-systems]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
12 回答
150488 浏览

c# - 将基数为 10 的数字转换为 .NET 中任何基数的最快方法?

我有一个我写的旧的(ish)C#方法,它接受一个数字并将其转换为任何基数:

这并不是那么超级快速和整洁。在 .NET 中是否有一种好的、已知的方法来实现这一点?

我正在寻找允许我使用任何带有任意字符串的基础的东西。

这仅允许碱基 16、10、8 和 2:

我想用它来利用数字、所有小写字母和所有大写字母来实现非常高的基数。就像在这个线程中一样,但对于 C# 而不是 JavaScript。

有谁知道在 C# 中执行此操作的好方法吗?

0 投票
2 回答
1927 浏览

ruby - 十进制与任何其他以 n 为基数的数字系统之间的相互转换

我编写了一些通用函数来在十进制和任何其他以 n 为底的数字系统之间进行转换(现在 n<=36),反之亦然。不想在这里弄乱,所以我在这里发布了代码。

有人可以为此提出更好的方法吗?可能更有效和Rubyish?

谢谢

0 投票
1 回答
34 浏览

number-systems - 是否有任何免费软件工具可以将各种数字系统的小数值相互转换?

我已经搜索了谷歌,但我没有找到将各种数字系统的小数值相互转换的工具。

谁能帮我一把?

我需要一个适用于 WindowsXP 的免费可执行文件。

0 投票
6 回答
11226 浏览

java - 从 Base-10 转换为 Base-9 的 Java 代码

如何在不转换为字符串的情况下将基数为 10 的长数转换为基数 9?

0 投票
1 回答
782 浏览

algorithm - 无进位加法的复杂性

两个二进制数可以用通常的“常规、冗余”表示形式表示(即引入另一个数字,比如 2,以获得非唯一表示,使得任何两个连续的 2 之间都有一个零),因此加法变为进位 -自由的。我听说复杂度是 O(k),其中 k 是两个数字中较短者的长度。但是算法本身是什么?它似乎没有出现在任何地方的网络上。我知道您可以在恒定时间内将这种表示形式加 1,以使结果保持规律。但我不知道如何概括这一点。

0 投票
4 回答
291 浏览

hex - 数制精度

如果有 2 个数字系统,例如具有 10 个符号 (0-9) 的十进制数字系统和具有 16 个符号 (0-9,AF) 的十六进制数字系统,我可以得出结论,使用十六进制,我将能够比使用由于符号数量较多而导致的十进制数系统?

Edit1:对不起,我只是从计算机的角度问,可能是为了书面计算或任何东西

0 投票
16 回答
6990 浏览

algorithm - 基于数基系统的算法?

我最近注意到有很多算法部分或全部基于创造性基础中对数字的巧妙使用。例如:

  • 二项式堆基于二进制数,更复杂的倾斜二项式堆基于倾斜二进制数。
  • 一些用于生成按字典顺序排列的算法是基于阶乘数系统的。
  • 尝试可以被认为是一次查看字符串的一位数字的树,以获得适当的基数。
  • 霍夫曼编码树旨在让树中的每条边以某种二进制表示形式编码一个零或一。
  • 斐波那契编码用于斐波那契搜索并反转某些类型的对数。

我的问题是:还有哪些其他算法使用聪明的数字系统作为其直觉或证明的关键步骤?. 我正在考虑组织一个关于这个主题的演讲,所以我必须借鉴的例子越多越好。

0 投票
1 回答
868 浏览

java - 基本转换:分数问题

我编写了一个系统,能够将任何基数(2-36)转换为另一个整数基数,它可以将任何实数从基数 10 转换为任何其他基数(2-36)。

我的问题是将有理数/无理数从 10 以外的任何基数转换为另一个基数。

我使用以下算法进行小数点右侧的转换:

1) 取输入中小数点 (0.xxxxxx--->) 的右侧,并将其乘以要转换为的基数。

2)取大于一的数(点的左边),加到转换后的数的右边。

3)取乘积的右侧,在下一次重复中使用它作为乘数(它乘以基数)

4)重复直到满意或留下一个整数(右侧为0)。

这非常适合将任何浮点数从十进制转换为另一个基数,但显然您不能从非十进制的基数转换。

因此,我尝试将小数点右侧的初始值转换为以 10 为底,执行数学部分,然后在将其添加到输出值时将其转换回原始基数(之前已转换为新基数正在添加)。

不幸的是,这会返回小数点右侧的错误结果。因此,如果从不是以 10 为基数的基数转换,我的答案在左侧总是正确的,但在右侧是不正确的。

有没有人对如何使这项工作有任何想法?或者也许它不会?

编辑

或者,任何人都可以链接我/告诉我如何将有理的十六进制值转换为十进制吗?仅此一项就足以让我解决这个问题。

解决方案

对于将来阅读此问题的其他任何人,我发现了一个相当简单的解决此问题的方法。

您所要做的就是取小数点右侧的数字(无论它可能是什么基数)并将其转换为十进制(您可以在此处查看如何转换整数)。然后取该数字并除以其中的最大位值。例如:

然后,您可以获取该小数并通过我上面讨论的算法运行它。

感谢大家在这个问题上的帮助!

0 投票
5 回答
492 浏览

c - 存储大型 B 基数的最佳方法?

存储大型 B 基数的最佳方法是什么,以便可以有效地完成右移和检查最低有效位等操作?

实际上,我遇到了一个面试问题,上面写着

我在想的是,如果我考虑base N number system, thenN^N将相当于1 followed by N zeroin it。例如 - 对于 N = 2,2^2 = 100(以 2 为底),对于 N=3,3^3 = 1000(以 3 为底)。然后我可以轻松地编写一个函数来判断是否K = N^N

现在这个函数有两个主要问题:

为了提高效率,我正在寻找某种方法来表示大的基数 N 数字,以便我可以有效地执行右移和检查最低有效位操作。有没有人遇到过这样的事情?或者有人知道有效解决这个问题的任何其他方法吗?

0 投票
2 回答
13151 浏览

c - C中字符串内的八进制表示

在给定的程序中:

它显示输出为:

63 55 0
--?-- --7-- ----

我可以理解它将\0 (\077) 之后的前两个字符从八进制转换为十进制,但是任何人都可以解释为什么 2 个字符,为什么不是 1 或 3 或任何其他字符?

请解释这背后的逻辑。