问题标签 [bigint]

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 投票
3 回答
468 浏览

php - 数字字符串(任意大小)-> 多个整数

我遇到了一个问题,因为我的数据库有 BIGINT 数据(64 位整数),但我运行的 PHP 版本只有 32 位。

因此,当我从表中提取值时,我最终得到一个表示以 10 为底的 64 位整数的数字字符串。理想情况下,我想做的是使用 64 位整数作为位掩码。所以我需要选择两个 32 位整数(一个代表上半部分,一个代表下半部分)或以 2 为底的数字字符串。

问题是我不能只是乘以它,因为我的 PHP 只有 32 位。我卡住了吗?

0 投票
6 回答
11355 浏览

c - 将二进制转换为十进制的最快方法?

我有四个无符号 32 位整数,代表一个无符号 128 位整数,以小端序排列:

我想将此数字转换为其十进制字符串表示形式并将其输出到文件中。

现在,我正在使用一个bigint_divmod10函数将数字除以 10,并记录余数。我反复调用这个函数,将余数作为数字输出,直到数字为零。这很慢。这是最快的方法吗?如果是这样,是否有一种聪明的方法来实现我没有看到的这个功能?我试过看 GMP 的get_str.c,但我觉得它非常难以理解。

编辑:这是我能够为 divmod10 函数提出的最快代码:

其中 add 函数定义为:

0 投票
3 回答
7229 浏览

java - Java/Scala BigInteger 粘贴

我对 Java 类有一个问题BigInteger:我无法将大值粘贴到BigInteger. 例如,假设我想为BigInteger这个号码分配一个:

我不能直接分配它,因为编译器认为它是一个整数:

但我希望它是一个BigInteger. 有什么办法可以直接粘贴到源代码中?

如果没有这样的方法,那么 Scala 中有没有一种方法,它有一个更容易使用的BigInt类?

0 投票
12 回答
262134 浏览

c# - C# 中 bigint 的等价物是什么?

在 C# 中处理一个值时我应该使用什么,它是 SQL Server 数据库的 bigint?

0 投票
3 回答
2640 浏览

c++ - 将 float 转换为 bigint(也就是获取二进制指数和尾数的便携式方法)

在 C++ 中,我有一个 bigint 类,它可以保存任意大小的整数。

我想将大浮点数或双精度数转换为 bigint。我有一个工作方法,但它有点黑客。我使用 IEEE 754 数字规范来获取输入数字的二进制符号、尾数和指数。

这是代码(这里忽略符号,这并不重要):

它可以工作,但它相当丑陋,我不知道它的便携性如何。有一个更好的方法吗?有没有一种不那么丑陋、便携的方法来从浮点数或双精度数中提取二进制尾数和指数?


感谢您的回答。对于后代,这是使用 frexp 的解决方案。由于循环,它的效率较低,但它适用于浮点数和双精度数,不使用 reinterpret_cast 或依赖于浮点数表示的任何知识。

0 投票
1 回答
752 浏览

c - 你如何编写一个 bigint 库/libgmp 是如何工作的?

我知道各种平台上有许多用于 C 的 BigInt 库以及如何使用它们,但我很感兴趣:它们是如何工作的?我将如何建立自己的图书馆(我不打算尝试,没有必要重新发明轮子,但我对它如何发生感兴趣)?谁能指出我可能解释程序/基础知识的教程等?

谢谢,

九指。

0 投票
3 回答
3616 浏览

facebook - facebook连接uid mysql存储问题

我正在做一个 facebook 连接集成。我使用 facebook php 库来获取 uid,比如

$facebook = 新 Facebook($api_key, $secret); $fb_user = $facebook->require_login();

$fbuser 是一个 16 字符长的 bigint,例如 1000002949493949

但是,当我将此值插入 mysql 时,它只插入 2949493949

所以后来当我尝试将 uid 与存储在我的数据库中的 1000002949493949 匹配时,它不匹配,因为数据库返回 2949493949

我数据库中的 uid 字段是一个长度为 20 的 bigint。它最初是一个 int,但是当我开始遇到新的更长的 uid 时我改变了它。

知道我需要做什么才能正确存储 uid 吗?

0 投票
1 回答
2177 浏览

math - MIPS 上的多精度算术

我只是想在本机 MIPS 上实现多精度算术。假设一个 64 位整数在寄存器 $12 和 $13 中,另一个在寄存器 $14 和 $15 中。这笔款项将存放在 10 美元和 11 美元的寄存器中。64 位整数的最高有效字在偶数寄存器中找到,最低有效字在奇数寄存器中找到。它说,在互联网上,这是最短的实现。

我只是想仔细检查我是否理解正确。sltu 检查两个最低有效字的总和是否小于或等于操作数之一。如果是这种情况,那么是否发生了进位,这是对的吗?

要检查添加两个最重要的单词时是否发生进位并将结果存储在 $9 我必须做的事情:

这有道理吗?

0 投票
5 回答
4204 浏览

c++ - C++ BigInt 乘法概念问题

我正在用 C++ 构建一个小型 BigInt 库,用于我的编程语言。

结构如下:

我有一个函数,通过将字符串拆分为单个字符并将它们放入digits.

数字中的数字都是相反的,所以数字 123 如下所示:

我已经设法编写了添加功能的代码,效果很好。

它的工作原理有点像这样:

(在这种情况下,当我将 1 加到 9 时会发生溢出:从 10 中减去 10,溢出加 1,溢出被添加到下一位)

所以想想两个数字是如何存储的,比如:

以上代表了digitsbigints 2 (A) 和 100 (B) 的。 -表示未初始化的数字,它们不被访问。

所以添加上面的数字可以正常工作:从 0 开始,加 2 + 0,到 1,加 0,到 2,加 1

但:

当我想用上述结构进行乘法运算时,我的程序最终会执行以下操作:

从 0 开始,将 2 与 0 (eek) 相乘,然后到 1,...

所以很明显,对于乘法,我必须得到这样的顺序:

然后,一切都清楚了:从 0 开始,将 0 与 0 相乘,到 1,将 0 与 0 相乘,再到 2,将 1 与 2 相乘

  • 我怎样才能设法digits进入正确的乘法形式?
  • 我不想做任何阵列移动/翻转 - 我需要性能!
0 投票
3 回答
1581 浏览

sql-server - 在 SQL Server 相关表中将主键从 GUID 更改为 BigInt 的方法

我有两个具有 10-2000 万行的表,它们具有 GUID 主键,并且至少有 12 个通过外键相关的表。每个基表有 10-20 个索引。

我们正在从 GUID 转移到 BigInt 主键。我想知道是否有人对方法有任何建议。现在这是我正在考虑的方法:

  1. 删除所有涉及的表上的所有索引和 fkey。
  2. 将“NewPrimaryKey”列添加到每个表
  3. 在两个基表上制作密钥标识
  4. 编写数据更改脚本“更新表 x,设置 NewPrimaryKey = y where OldPrimaryKey = z
  5. 将原始主键重命名为“oldprimarykey”
  6. 将“NewPrimaryKey”列重命名为“PrimaryKey”
  7. 编写所有索引和 fkey 的脚本

这看起来是个好方法吗?有谁知道可以对此有所帮助的工具或脚本?

TD:根据附加信息进行编辑。请参阅此博客文章,该文章解决了 GUID 为主时的方法: http ://www.sqlmag.com/blogs/sql-server-questions-answered/sql-server-questions-answered/tabid/1977/entryid/12749 /默认.aspx