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

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(使用前将#替换为@)

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

  • Google Sheet 产生无穷小数作为整数/整数的余数

    我有这个工作表 我需要在其中创建一个检查器来确定一个数字 两个数字之和除以另一个值 DIVISOR 的结果 是否是整数 没有小数 运行上述检查器后 它大部分工作得很好 但似乎检测到一些项目不是整数 尽管它们是除数的精确倍数 https do
  • 封装和抽象之间的区别

    我今天去面试了 我有一个问题来自OOP 关于之间的区别封装 抽象 我据我所知回答说封装基本上将数据成员和成员函数绑定到一个称为Class 然而抽象基本上是为了隐藏实现的复杂性并为用户提供方便的访问 我以为她会同意我的回答 但她质疑 如果两者
  • 多元二分法

    我需要一种算法来执行二维二分法来解决 2x2 非线性问题 示例 两个方程f x y 0 and g x y 0我想同时解决这个问题 我非常熟悉一维二分 以及其他数值方法 假设我已经知道解决方案位于界限之间x1 lt x lt x2 and
  • 仅具有副作用的方法的名称

    因此 改变其对象的方法是mutator 不改变其对象但返回值 或对值的引用 的方法是getter 是否有一个广泛使用的方法名称 该方法不会改变其对象 不返回值 但可能会改变作为参数传递给它的对象 也就是说 只有每个方法对参数有副作用时才会被
  • 模块化 pow() 中的负幂

    我们如何使用pow在模块化上下文中带有负指数 战俘 x y z 如果存在 z 则 x 和 y 必须是整数类型 并且 y 必须是非负数 gt gt gt pow 11444 357 0 0 gt gt gt pow 11444 357 487
  • 让人们在电影院就座

    这是基于我读到的一篇关于大型软件公司提出的谜题和面试问题的文章 但它有一个转折 一般问题 有一种算法可以让人们在电影院就座 让他们直接坐在朋友旁边 而不是敌人旁边 技术问题 给定一个 N M 网格 用 N M 1 项填充网格 每个项目都有一
  • 优化康威的“生命游戏”

    为了进行实验 我 很久以前 实施了康威的生命游戏 http en wikipedia org wiki Conway s Game of Life 而且我知道this https stackoverflow com questions 18
  • 您能解释一下流的概念吗?

    我知道流是字节序列的表示 每个流都提供了向其给定的后备存储读取和写入字节的方法 但流的意义何在 为什么我们与之交互的不是后备存储本身 不管出于什么原因 这个概念并不适合我 我读过很多文章 但我想我需要一个类比或其他东西 选择 流 这个词是因
  • 在 OAuth2.0 中使用 Facebook 访问令牌作为资源所有者凭据

    OAuth 2 0 规范定义了资源所有者密码凭证授予类型 https datatracker ietf org doc html draft ietf oauth v2 26 section 4 3 它允许直接使用资源所有者密码凭据 即用户
  • 您能解释一下流的概念吗?

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

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

    有时 我会编写一些带有比我喜欢的更多括号的代码 if new Day new Date millisecondsPerDay 75 instanceof oldDay Bonus points if that condition made
  • Google 文件系统中的块大小问题

    谷歌文件系统论文 http labs google com papers gfs html 块大小是关键设计之一 参数 我们选择了64MB 这比典型文件大得多 系统块大小 每个块 副本存储为普通 Linux 文件放在 chunkserver
  • Big O 用于有限、固定大小的可能值集

    这个问题 https stackoverflow com questions 12305028 java what is the best way to find first duplicate character in a string引
  • 多维数组(如 C/C++ 中的数组)是不规则数组的特殊情况吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我和一个哥们讨论了C 和C多维数组是否是不规则数组的特例 一种观点是 多维数组不是参差不齐的数组 因为多维数组的每个元素具有相同的大小 在参差不齐的数
  • 什么是样板代码、热点代码和热点?

    我知道这些术语是在性能实现 优化的背景下使用的 最近一直在研究这个问题 并尝试过搜索 但没有得到任何例子 清楚地阐述 描述这些概念以及在现实世界开发场景中实现这些问题 概念 有人可以彻底解释这些术语 示例场景以及可能使用这些概念和术语的地方
  • 替代位置基础系统(十六进制、八进制、二进制)如何工作?如何将它们转换为十进制?

    我以前在编程课上没有学过这一点 但现在我需要知道它 有哪些学习这些数字以及如何转换它们的好资源 我几乎会像记住乘法表一样记住这些 在我们日常的十进制系统中 基数或radix http en wikipedia org wiki Radix
  • 数据库、表和列命名约定? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 每当我设计数据库时 我总是想知道是否有命名数据库中项目的最佳方法 我经常问自己以下问题 表名应该是复数吗 列名应该是单数吗 我应该为表或列添加前
  • 需要帮助解决 Project Euler 问题 200 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试制定一个算法来解决 We
  • INT_MIN % -1 是否会产生未定义的行为?

    gcc 生成浮动代码 引发SIGFPE对于以下代码 include

随机推荐

  • 如何在 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 也许只是将除法翻译