问题标签 [modulo]
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.
c - 以 64 位整数为模计算 128 位整数的最快方法
我有一个 128 位无符号整数 A 和一个 64 位无符号整数 B。最快的计算方法是什么A % B
- 即 A 除以 B 的(64 位)余数?
我希望用 C 或汇编语言来执行此操作,但我需要针对 32 位 x86 平台。不幸的是,这意味着我不能利用编译器对 128 位整数的支持,也不能利用 x64 架构在单个指令中执行所需操作的能力。
编辑:
谢谢你到目前为止的答案。但是,在我看来,建议的算法会很慢 - 执行 128 位除以 64 位除法的最快方法不是利用处理器对 64 位除以 32 位除法的本机支持吗?有谁知道是否有办法通过几个较小的部门来执行较大的部门?
回复:B多久换一次?
我主要对通用解决方案感兴趣 - 如果 A 和 B 每次都可能不同,您将执行什么计算?
然而,第二种可能的情况是,B 的变化不像 A 那样频繁——每个 B 可能有多达 200 个 As 来除。在这种情况下,你的答案会有什么不同?
c++ - How do I do modulus in C++?
How do I perform a mod operation between two integers in C++?
operators - 识别何时使用模运算符
我知道模数(%) 运算符计算除法的余数。如何确定需要使用模运算符的情况?
我知道我可以使用模运算符来查看一个数字是偶数还是奇数、素数还是复合数,但仅此而已。我不经常考虑余数。我确信模运算符很有用,我想学习利用它。
我只是在确定模运算符适用的位置时遇到问题。在各种编程情况下,我很难看到问题并意识到“嘿!除法的其余部分可以在这里工作!”。
c - Dijkstra 算法在链表图实现中的大问题
我用链表实现了我的图,用于顶点和边,这已成为 Dijkstra 算法的一个问题。正如我在上一个问题中所说,我正在转换使用邻接矩阵的代码来处理我的图形实现。
问题是当我找到最小值时,我得到一个数组索引。如果图形顶点存储在数组中,则该索引将与顶点索引匹配。并且对顶点的访问将是恒定的。
我没有时间更改我的图形实现,但我确实有一个哈希表,由一个唯一编号(但不是从 0 开始,就像 100090000)索引,这是我遇到的问题。每当我需要时,我都会使用模运算符来获得一个介于 0 和顶点总数之间的数字。
当我需要来自数字的数组索引时,这很好用,但是当我需要来自数组索引的数字(以在恒定时间内访问计算出的最小距离顶点)时,就不是那么多了。
我试图搜索如何反转模运算,例如 100090000 mod 18000 = 10000 和 10000 invmod 18000 = 100090000 但找不到方法。
我的下一个替代方法是构建某种参考数组,在上面的示例中,arr[10000] = 100090000。这将解决问题,但需要再循环一次整个图。
我当前的图形实现是否有更好/更简单的解决方案?
c - 将模运算符实现为 C 中的函数
我们如何在不使用运算符的情况下将模运算符实现为 C 中的函数?
arrays - 如果我使用一维数组来表示方板,我如何获取索引并检查上方、下方和两侧的方格?
如果我有一个 4x4 游戏板,我在程序中将其表示为大小为 16 的一维整数数组。
如何获得任何给定索引的上方、下方、左侧和右侧正方形的索引?
因此,例如:
代表这个板子
假设我目前在董事会的索引#8 上(值 = 7)。我怎样才能得到 4 (value = 3) , 5 (value = 6), 10 (value = 11) 的索引,并意识到没有正确的正方形,因为它位于棋盘的右侧边缘。
我知道我需要使用一些模数数学,但我没有想出正确的方法来获取相邻正方形的索引。
我在想类似...
这似乎是正确的方法吗?
language-agnostic - 模除法是如何工作的
我真的不明白模数除法是如何工作的。我在计算27 % 16
和结束,11
我不明白为什么。
我似乎无法在网上找到通俗的解释。有人可以详细说明这里发生了什么吗?
c# - c#中的数学模数
c# 中是否有一个库函数用于数字的数学模数 - 我特别指的是负整数模数正整数应该产生正结果。
编辑以提供示例:
-5 模 3 应该返回 1
modulo - 没有 mod 运算符我怎么能做 mod?
这种脚本语言没有 % 或 Mod()。我确实有一个 Fix() 可以去掉数字的小数部分。我只需要积极的结果,所以不要太健壮。
algorithm - 实现模运算的更好方法(算法问题)
我最近一直在尝试实现一个模块化指数器。我正在用 VHDL 编写代码,但我正在寻找更具算法性质的建议。模指数器的主要组件是模乘法器,我也必须自己实现它。我对乘法算法没有任何问题——它只是加法和移位,我已经很好地弄清楚了所有变量的含义,这样我就可以在相当合理的时间内进行乘法运算。
我遇到的问题是在乘法器中实现模运算。我知道执行重复减法会起作用,但它也会很慢。我发现我可以移动模数以有效地减去模数的大倍数,但我认为可能还有更好的方法来做到这一点。我正在使用的算法是这样的(奇怪的伪代码如下):
那么......这是一个好的算法,或者至少是一个好的起点?维基百科并没有真正讨论实现模运算的算法,每当我尝试在其他地方搜索时,我都会发现非常有趣但非常复杂(而且通常不相关)的研究论文和出版物。如果有一种我看不到的明显方法来实现这一点,我真的很感激一些反馈。