问题标签 [128-bit]

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

c++ - 如果我的编译器不支持,如何在 C 或 C++ 中加减 128 位整数?

我正在为一长串 128 位数字编写压缩器。我想将数字存储为差异 - 仅存储数字之间的差异而不是数字本身,因为我可以将差异打包成更少的字节,因为它们更小。

但是,对于压缩,我需要减去这些 128 位值,而对于解压缩,我需要添加这些值。我的编译器的最大整数大小为 64 位宽。

有人对有效地做到这一点有任何想法吗?

0 投票
6 回答
11355 浏览

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

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

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

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

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

其中 add 函数定义为:

0 投票
3 回答
7090 浏览

64-bit - 64 位机器上的无符号 128 位除法

我有一个 128 位数字存储为 2 个 64 位数字(“Hi”和“Lo”)。我只需要将它除以一个 32 位数字。我怎么能做到这一点,使用来自 CPU 的本机 64 位操作?

(请注意,我不需要任意精度库。只需要知道如何使用本机操作进行这个简单的除法。谢谢)。

0 投票
9 回答
116425 浏览

performance - 64 位程序是否比 32 位版本更大更快?

我想我专注于 x86,但我通常对从 32 位到 64 位的转变感兴趣。

从逻辑上讲,我可以看到常量和指针在某些情况下会更大,因此程序可能会更大。为了提高效率而在字边界上分配内存的愿望意味着分配之间有更多的空白。

我还听说 x86 上的 32 位模式在上下文切换时必须刷新其缓存,因为可能会重叠 4G 地址空间。

那么,64 位的真正好处是什么?

作为补充问题,128 位会更好吗?

编辑:

我刚刚编写了我的第一个 32/64 位程序。它制作 16 字节(32b 版本)或 32 字节(64b 版本)对象的链表/树,并在 stderr 上进行大量打印——这不是一个真正有用的程序,也不是典型的程序,但这是我的第一个。

尺寸:81128(32b) v 83672(64b) - 所以差别不大

速度:17s(32b) v 24s(64b) - 在 32 位操作系统 (OS-X 10.5.8) 上运行

更新:

我注意到正在开发一种新的混合 x32 ABI(应用程序二进制接口),它是 64b 但使用 32b 指针。对于某些测试,它会产生比 32b 或 64b 更小的代码和更快的执行速度。

https://sites.google.com/site/x32abi/

0 投票
4 回答
1370 浏览

c - 是否有库或其他方法可以进行 128 位数学运算?

我正在编写一个加密应用程序,需要使用 128 位整数。

除了标准的加法、减法、乘法、除法和比较之外,我还需要一个幂函数和模函数。

有谁知道可以做到这一点的库或其他实现?如果不是 128 位,是否有可用的 64 位选项?

0 投票
5 回答
2789 浏览

c# - DataType 用于存储长序列号(10 字节)

我们有一个设备,它有一个 10 字节的序列号,必须将其读入我们的应用程序并存储到 .net 数据类型中。在设备中,它被存储为一个无符号的 10 字节(80 位)数字。我不希望我们会对这个数字执行任何数学运算,而只会将其显示给用户。

.NET 框架没有内置的 UNIT128来存储此数据类型。我对存储此数据类型的建议是创建一个 10 元素字节数组并将数据读入此数组。这个问题有更好的解决方案吗?

注意:我在这个问题中看到GUID 是一个 128 字节的有符号整数,但以这种方式使用 GUID 似乎是个坏主意。还有其他建议吗?

0 投票
6 回答
27580 浏览

java - 如何在 Java 或 C++ 中表示 128 位整数?

是否可以在 Java 或 C++ 中使用 128 位整数?

0 投票
2 回答
12745 浏览

c - gcc 是否支持 amd64 上的 128 位 int?

gcc 是否支持 amd64 上的 128 位 int?

如何定义它?

如何使用 scanf/printf 读/写它?

0 投票
2 回答
4216 浏览

c - C 中 x64 上的 128 位算术

在 x86 上实现 bignums 时,显然最有效的数字大小选择是 32 位。但是,您需要最多两倍于数字大小的算术(即 32+32=33、32*32=64、64/32=32)。幸运的是,x86 不仅提供了这一点,而且还可以从可移植的 C ( uint64_t) 中访问它。

同样,在 x64 上,最好使用 64 位数字。这将需要 128 位算术(即 64+64=65、64*64=128、128/64=64)。幸运的是,x64 提供了这一点。不幸的是,它不能从便携式 C 中访问,尽管显然可以使用汇编。

所以我的问题是它是否可以从不可移植的 C 中访问。x64 上的任何 C 编译器是否提供对此的访问,如果是,语法是什么?

(请注意,我不是在谈论被严格视为 32 或 64 位字的集合的 128 位向量,它们之间没有进位传播,而是关于实际的 128 位整数运算。)

0 投票
4 回答
5185 浏览

c - 有没有办法在 gcc <4.4 上进行 128 位移位?

gcc4.4 似乎是他们添加时的第一个版本int128_t。我需要使用位移,并且我已经用完了一些位域的空间。

编辑:这可能是因为我在一台 32 位计算机上,没有办法将它用于 32 位计算机(Intel Atom),是吗?我不在乎它是否会生成棘手的慢速机器代码,如果我能按预期进行位移。