模运算符 (%) 实际上是如何计算的?

2024-03-13

最近我对模运算符感到困惑,%.

据了解a % b == a-a/b*b当我们有整数时a and b where a > b,如果a and b足够小。

然而,当谈到处理器的计算方式时,处理器是否使用与前面提到的相同的方法,a-a/b*b?也许只是将除法翻译成减法或加法,或者可能涉及一些转换?


除了 2 的幂之外,模运算符可以(并且在大多数优化编译器中)转换为简单的按位运算,恐怕唯一的方法是困难的方法。解释是http://en.wikipedia.org/wiki/Modulo_operation http://en.wikipedia.org/wiki/Modulo_operation

在另一个答案中,@Henk Holterman 指出,一些 CPU 在微代码中执行此操作,在进行整数除法时将余数保留在寄存器中,这意味着模指令可以简化为整数除法并返回余数。 (我在此处添加该信息是因为该答案已被接受。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模运算符 (%) 实际上是如何计算的? 的相关文章

  • Code-golf:将乘法表输出到控制台

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我最近向一位从事工作经验的学生推荐了一篇有关将乘法表转储到控制台的文章 它使用嵌套的 for
  • 如何仅使用位移位和逻辑操作将 unsigned int 加 1?

    我的作业 项目中有一个问题 仅使用以下方法将 1 添加到无符号整数位移位 and 逻辑运算符 函数中不应有任何 或 符号 我从前几天开始就在尝试 但还没有成功 到目前为止 我已经尝试过以下操作 int A B C lt lt 1 B C 有
  • 仅具有副作用的方法的名称

    因此 改变其对象的方法是mutator 不改变其对象但返回值 或对值的引用 的方法是getter 是否有一个广泛使用的方法名称 该方法不会改变其对象 不返回值 但可能会改变作为参数传递给它的对象 也就是说 只有每个方法对参数有副作用时才会被
  • 计算非图的所有可能突变[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我需要根据非常具体的配方构建一个非图解算器 对于每一行 我需要计算所有可能的突变 然后检查该行是否仍然使谜题有效 对于那些不知道非图的人 这
  • 长度为 k 的非重叠子串的随机采样

    给定一个长度的字符串n 我将如何 伪 随机采样m大小子串k这样采样的子串就不会重叠 我的大部分脚本编写经验都是使用 Perl 但任何通用语言的易于运行的解决方案就足够了 如果输入中不能出现某个字符 例如X just my size 20 m
  • 访客模式的实际优势是什么?有哪些替代方案?

    我读了很多关于访客模式及其假定优势的内容 然而对我来说 在实践中应用它们似乎并没有那么大的优势 方便 和 优雅 似乎意味着大量的样板代码 因此 代码很难遵循 另外 接受 访问 的描述性并不强 如果您的编程语言没有方法重载 即 Vala 那么
  • 您能解释一下流的概念吗?

    我知道流是字节序列的表示 每个流都提供了向其给定的后备存储读取和写入字节的方法 但流的意义何在 为什么我们与之交互的不是后备存储本身 不管出于什么原因 这个概念并不适合我 我读过很多文章 但我想我需要一个类比或其他东西 选择 流 这个词是因
  • 在未排序的数组中查找 2 个等于给定总和的数字

    我们需要在数组中找到总和等于给定值的数字对 A 6 4 5 7 9 1 2 总和 10 那么这些对是 6 4 9 1 我对此有两个解决方案 O nlogn 解决方案 使用 2 个迭代器 开始和结束 进行排序 校验和 O n 解决方案 对数组
  • 我可以在服务器端应用程序(PHP、Ruby、Python 等)上读取 URL 的哈希部分吗?

    假设 URL 为 www example com val 1 part2 PHP可以读取请求变量val1使用 GET 数组 是哈希值part2还可读吗 或者这仅取决于浏览器和 JavaScript 主要问题是浏览器甚至不会发送带有片段部分的
  • 什么时候函数名太长?

    在可能的情况下 我尝试对我的函数名称进行描述 这有时会导致函数名称在二十到三十个字符范围内 例如GetActionFromTypeName or GetSelectedActionType 在什么时候函数会变得太长而难以管理 对于编译器来说
  • 您能解释一下流的概念吗?

    我知道流是字节序列的表示 每个流都提供了向其给定的后备存储读取和写入字节的方法 但流的意义何在 为什么我们与之交互的不是后备存储本身 不管出于什么原因 这个概念并不适合我 我读过很多文章 但我想我需要一个类比或其他东西 选择 流 这个词是因
  • 如何正确区分树(即嵌套的字符串列表)?

    我正在使用由嵌套字符串列表组成的数据类型的在线编辑器 请注意 如果每次更改单个值时我都要传输整个结构 那么流量可能会变得难以忍受 所以 为了减少流量 我想到了应用 diff 工具 问题是 如何找到并报告两棵树的差异 例如 ah bh ha
  • 多个资源的 REST 接口使用

    我目前正在通过 http 添加 REST API 到在线服务 我遇到了一个非常简单的问题 我找不到令我满意的答案 我主要有 2 个资源 用户 和 报告 正如您所猜测的那样 报告与用户相关联 与一个且仅一个 我的数据库中的外键 不管怎样 我有
  • 3 维装箱算法

    我面临着 3 维装箱问题 目前正在进行一些初步研究 了解哪些算法 启发式方法目前能产生最佳结果 由于问题是 NP 难问题 我不希望在每种情况下都能找到最佳解决方案 但我想知道 1 最好的精确求解器是什么 分支定界 我期望使用合理的计算资源可
  • 边界椭圆约束于水平/垂直轴

    背景 我正在尝试将地形图裁剪成围绕多个风力涡轮机的最小尺寸椭圆 以最小化地图的尺寸 执行此地图裁剪的程序可以裁剪椭圆 但仅限轴沿 x 轴和 y 轴对齐的椭圆 我知道边界椭圆问题的算法 https stackoverflow com ques
  • 基本编程/算法概念[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我即将 与其他程序员一起 在我的高中
  • 导致堆栈溢出的最短代码是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Lockfree 标准集合和教程或文章

    有人知道用于无锁常用数据类型的实现 即源代码 的好资源吗 我正在考虑列表 队列等 锁定实现非常容易找到 但我找不到无锁算法的示例以及 CAS 的工作原理以及如何使用它来实现这些结构 查看 Julian M Bucknall 的博客 他 详细
  • 以任意顺序匹配可选捕获组

    在解析用户输入的许多情况下 用户有机会向输入添加几个可选标志 这些标志应该以任何顺序接受 如何使用正则表达式对其进行解析 以便每个标志都位于它自己的捕获组中 如果存在 例如 有一个必需的令牌a 然后是 3 个可选标记 可以按任何顺序出现b
  • 负整数的基数排序

    我正在尝试对整数 包括负整数 实现基数排序 对于非负整数 我计划为数字0 9创建一个10个队列的队列 并实现LSD算法 但我对负整数有点困惑 我现在的想法是继续为它们创建另一个包含 10 个队列的队列 并分别对它们进行排序 然后在最后 我将

随机推荐

  • 如何在 Rust 中惯用地替换特定字符?

    所以我有字符串 Hello World 并想替换 和 这样新字符串就是 Hello World 在 Ruby 中 我们可以使用以下命令轻松完成此操作gsub method Hello World gsub 如何在 Rust 中惯用地做到这一
  • 创建随机二进制文件

    我正在尝试使用 python 创建一个随机二进制文件 这就是我已经得到的 f open filename wb for i in xrange size kb for ii in xrange 1024 4 f write struct p
  • MarshalAs 嵌套结构

    我有两个 C 结构 在从 C 调用 DLL 方法时必须将它们作为参数发送 例如 让我们将它们定义为 struct A int data struct B int MoreData A SomeData 我需要从 C 调用的方法具有以下签名
  • 在 IE 中打开新选项卡

    我正在使用以下代码在 Internet Explorer 中打开网站 ProcessStartInfo startInfo new ProcessStartInfo Arguments http www example com FileNa
  • 更改 use 元素上的 defs 中定义的属性

    如何通过脚本来更改 defs 中定义的 use element 的样式 我试图进入 w3c 工作草案界面 但我迷失在那个迷宫中
  • 在自动布局中将子视图的 X 居中会引发“未准备好约束”

    我有一个自定义 UIView 子类 它是通过笔尖初始化的 In awakeFromNib 我正在创建一个子视图并尝试将其置于其超级视图的中心 self setInteralView UIView alloc init self intern
  • Haskell 性能:组合与应用程序?

    我看到了一些关于函数组合和应用程序之间的相似点和差异以及实现它的各种方法的问题 但是有一件事开始让我有点困惑 据我搜索 还没有被问到 是关于函数组合和应用程序之间的差异表现 当我学习 F 时 我爱上了管道操作符 gt 这在 haskell
  • 具有未知属性名称的结构的嵌套属性?

    我使用 JSON 将一些值从外部源获取到变量中 我有这样的类型json Unmarshal https golang org pkg json Unmarshal将值放入 type Frame struct Type string Valu
  • 仅刷新 php 中的 div [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个想要更新的聊天框 但我只想刷
  • CTRL+C 不会停止 sinatra 应用程序

    Normally when I run a rails app from the console during development I can just press Ctrl C and it exits Then I can run
  • 在GDB中,如何在程序停止时自动执行命令? (如显示)

    我希望每次程序停止时自动执行一些命令 就像 display 对 x 所做的那样 我怎么做 这是我发现的简单方法 define hook stop commands to be executed when execution stops en
  • 动态更改 GPS LocationListener 的 minTime

    我正在编写的应用程序使用 GPS 位置管理器服务 requestLocationUpdates 但我希望能够更改整个程序中的最小时间和最小距离参数 我在创建时初始化位置侦听器 但我不知道如何更改这些参数 甚至不知道是否可以这样做 这样做的主
  • TimeZoneInfo.ConvertTimeFromUtc c#

    var Result1 TimeZoneInfo ConvertTimeFromUtc DateTime UtcNow TimeZoneInfo Local var Result2 TimeZoneInfo ConvertTimeFromU
  • 如何通过CSS突出显示java代码?

    我看到一些很酷的代码突出显示 看起来像 Eclipse 中的代码 但我找不到它 你知道任何很酷的 java 代码高亮 css 吗 我想你想要代码美化 http code google com p google code prettify 支
  • 如何取消我的 Microsoft Azure 订阅?

    我注册了 Azure 试用版 但不再使用它 但是 他们仍在向我的信用卡收费 我想取消订阅 但找不到方法 我也尝试联系客户服务中心 但没有回复 我如何取消 关闭我的帐户 要取消您的帐户 请登录 Azure 帐户门户 https account
  • Log4j2 已删除的滚动文件仍然打开并且磁盘空间未释放

    我最近在我的 tomcat6 服务器上从 log4j 迁移到 log4j2 问题是我删除的滚动文件永远保持打开状态 因此磁盘空间没有被释放 我使用此命令 sudo usr sbin lsof grep returned 来检查打开的已删除文
  • 从 joinPoint 获取 HTTP 方法

    我需要从某个方面的 joinPoint 获取像 POST PATCH GET etc 这样的 http 方法 Before isRestController public void handlePost JoinPoint point do
  • 在本地计算机上安装主题。我需要 FTP 数据连接吗?

    我刚刚第一次在本地主机上安装了 wordpress 我想安装一个主题 它询问我的 FTP 用户名和密码 它说 要执行请求的操作 WordPress 需要访问您的 Web 服务器 请输入您的 FTP 凭据以继续 如果您不记得您的凭据 您应该联
  • 如何在ListView中使用虚拟模式?

    我在用着VirtualMode填充列 例如 List
  • 模运算符 (%) 实际上是如何计算的?

    最近我对模运算符感到困惑 据了解a b a a b b当我们有整数时a and b where a gt b 如果a and b足够小 然而 当谈到处理器的计算方式时 处理器是否使用与前面提到的相同的方法 a a b b 也许只是将除法翻译