有符号 64 x 32 整数除法

2023-12-10

假设您有一个机器指令 udive,它通过采用 (32 位被除数

// assume: a / b guaranteed not to overflow
a = 64bit dividend, a.h & a.l are hi & lo 32bits respectively
b = 32bit divisor

q1 = udive(a.h, b)  // (a.h << 32) / b
r1 = -(q1 * b)      // remainder of the above, shortcut since a.h & 0xffffffff == 0
q2 = a.l / b        // a.l / b using regular unsigned division
r2 = a.l - (q2 * b) // remainder of the above
q = q1 + q2
r = r1 + r2

// r < r2, r overflowed and is >32bits, implies r > b since b is 32bits
// r >= b, quotient too small by 1, adjust
if (r < r2) or (r >= b)
    q = q + 1
return q

然而,签署的案件给我带来了问题。假设有一个等效的 sdive 指令执行 udive 的签名版本,我无法完全弄清楚如何处理余数等。


我认为,如果明确说明哪些变量是 32 位、哪些变量是 64 位以及比较是有符号的还是无符号的,那么你的无符号代码会更容易阅读。

这本书黑客的喜悦通常适合这种低级算术的东西。我目前手头没有副本,但它在给定 64/32->32 的情况下执行 64/64->64 的代码在线:http://www.hackersdelight.org/HDcode/newCode/divDouble.c

通过简单地获取输入的绝对值,进行无符号除法,然后如果输入具有不同的符号则翻转结果位的符号来完成有符号情况。这对我来说这可能是最好的方法(它肯定比其他方法更容易证明正确)。您可能需要将股息作为特殊情况,使其成为可能的最小整数(如果它不会随波逐流)。

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

有符号 64 x 32 整数除法 的相关文章

  • 如何在haskell中反转整数?

    我需要有关如何逆转的帮助Integer在 Haskell 中具有以下类型签名 reverseInt Integer gt Integer reverseInt a undefined help here 我需要Integer输入要反转的数字
  • 汉明数和双精度

    我正在玩生成汉明数 http en wikipedia org wiki Regular number在 Haskell 中 尝试改进明显的功能 请原谅函数的命名 mergeUniq Ord a gt a gt a gt a mergeUn
  • 精确存储大整数

    在R软件中 a lt 123456789123456789123456789 sprintf 27f a 1 123456789123456791337762816 000000 我得到了错误的答案 我想要准确的a value 为什么系统显
  • Ruby 中的安全整数解析

    我有一根绳子 比如说 123 我想将它转换为整数123 我知道你可以简单地做some string to i 但这会转换 lolipops to 0 这不是我想要的效果 当我试图用一种美好而痛苦的方式转换一些无效的东西时 我希望它在我脸上爆
  • 如果可能的话,如何在 C 中定义 2 位数字?

    对于我的大学过程 我正在模拟一个称为随机顺序吸附的过程 我必须做的一件事是随机地将正方形 不能重叠 放置到格子上 直到没有更多空间为止 重复该过程几次以找到平均 干扰 覆盖率 基本上我正在对一个大的整数数组执行操作 其中存在 3 个可能的值
  • 整数转换(缩小、扩大)、未定义的行为

    对我来说 以我可以轻松理解的方式找到有关该主题的信息非常困难 因此我要求对我所找到的内容进行审查 这都是关于转换和转换的 在示例中我将提到 signed unsigned int bigger signed unsigned char sm
  • 在Python中,整数除法中向零舍入的好方法是什么?

    1 2 gives 0 正如它应该 然而 1 2 gives 1 但我希望它向 0 舍入 即我希望 1 2 为 0 无论它是正数还是负数 最好的方法是什么 进行浮点除法 然后转换为 int 不需要额外的模块 Python 3 gt gt g
  • Swift 的 Decimal 精度问题

    根据文档here https developer apple com documentation foundation decimal Swift 3 4 Decimal 类型是以 10 为基数桥接到 NSDecimalNumber 的表示
  • 使用字节将字母数字代码解码为键值对象

    我有一个来自 CS GO 游戏的 十字准线代码 CSGO O4Jsi V36wY rTMGK 9w7qF jQ8WB 我可以使用此函数解码一些值 import BigNumber from bignumber js Intentionall
  • Windows 服务器上的 PTP 同步(与 Linux 相比) - 可以保证什么精度

    我想知道大家是否知道准确度如何PTP http en wikipedia org wiki Precision Time Protocol在 Windows Server 2008 上可以保证同步 我知道这个线程 Windows 中进程的最
  • 我应该如何比较这些双打以获得所需的结果?

    我这里有一个简单的示例应用程序 我在其中进行乘法和加法double变量 然后将它们与预期结果进行比较 在这两种情况下 结果都等于预期结果 但当我进行比较时 它失败了 static void Main string args double a
  • 整数包装对象仅在值 127 内共享相同的实例? [复制]

    这个问题在这里已经有答案了 这里它们是同一个实例 Integer integer1 127 Integer integer2 127 System out println integer1 integer2 outputs true 但这里
  • 我们如何找到 C# 整数数组中的项目计数?

    我需要在 C 数组中查找类型为整数的项目计数 我的意思是 int intArray new int 10 int 0 34 int 1 65 int 2 98 intArray 的项目计数为 3 我在下面找到了 strArray 的代码 但
  • Java中的整数除法[重复]

    这个问题在这里已经有答案了 这感觉像是一个愚蠢的问题 但我在 Java 文档中找不到答案 如果我声明两个 int 然后将它们相除 到底发生了什么 他们是否转换为floats doubles首先 划分 然后投射回integer 或者除法是作为
  • JavaScript 中的整数

    MDN https developer mozilla org en JavaScript A re introduction to JavaScript Numbers states JavaScript 中的数字是 双精度 64 位格式
  • 如果两种语言都遵循 IEEE 754,那么两种语言的计算会得到相同的结果吗?

    我正在将程序从 Scilab 代码转换为 C 特别是一个循环产生的结果与原始 Scilab 代码略有不同 这是一段很长的代码 因此我不会将其包含在问题中 但我会尽力总结下面的问题 问题是 循环的每一步都使用上一步的计算 此外 计算之间的差异
  • 在 Python 中将 int 转换为 ASCII 并返回

    我正在为我的网站制作一个 URL 缩短器 我当前的计划 我愿意接受建议 是使用节点 ID 来生成缩短的 URL 因此 理论上 节点 26 可能是short com z 节点 1 可能是short com a 节点 52 可能是short c
  • 为什么 -INT_MIN = INT_MIN 在有符号的二进制补码表示中?

    我仍然没有找到为什么最低的有符号负数没有等效的有符号正数的原因 为简单起见 我的意思是 3 位二进制数 100 是 4 但我们不能有符号格式的正 4 因为我们不能 它溢出了 那么我们如何知道补码 1000 是 4 1000 0000 是 1
  • 在 C# 整数运算中,a/b/c 是否始终等于 a/(b*c)?

    设a b和c为非大正整数 对于 C 整数算术 a b c 是否始终等于 a b c 对我来说 在 C 中它看起来像 int a 5126 b 76 c 14 int x1 a b c int x2 a b c 所以我的问题是 x1 x2对于
  • 在 Visual Studio 2017 中变量模板中的除法返回零

    这大概是一个视觉工作室2017 questions tagged visual studio 2017与此问题相关的错误 Visual Studio 中 Lambda 的模板变量错误 https stackoverflow com q 49

随机推荐

  • 如何从排序向量中有效地删除一个值?

    假使 假设vec是可移动和可复制对象的排序向量 删除所有匹配元素的最有效方法是什么value 这是正确且最有效的方法吗 auto lb std lower bound vec begin vec end value vec erase lb
  • MySQL 数据库问号而不是希伯来字符..?

    我正在尝试使用 PHP 和 MySQL 构建一个购物车 我在MySQL中的数据库是utf8 我在数据库中的表是utf8 如何使用希伯来语字符 我能够通过执行以下操作来解决此问题 数据库排序规则必须是utf8 general ci 该表与希伯
  • 如何在 Chrome 扩展程序中禁用同源策略?

    也许有一些设置可以在扩展上下文中禁用此功能 由于我正在开发一个扩展 所以我自己有责任不射中自己的目标 在开发浏览器扩展时 摆弄这个完全不合理的安全问题是非常令人沮丧的 我不想通过全局禁用它来使整个浏览器变得不安全 仅适用于在manifest
  • 我想在 JavaScript 中验证我的必填字段不为空

    希望这是基本的 JavaScript 而且答案很简单 因为我是新手 我只是想确保所有必填字段都不为空 然后用户才能继续 在我的
  • 单击下载链接时文件损坏

    我尝试使用php强制下载图像jpg文件 我已经实现了以下代码 html a href a
  • 如何在 VSCode 中导出设置

    正如此处发布的如何导出设置 大家都坚持使用Settings Sync 如果不是插件强迫我使用GitHub 在我的电脑上明确拒绝 那就没问题了 有什么方法可以手动执行此操作 或者重定向插件以使用替代的 git 存储库来实现此目的 对于 Win
  • 文本不包含任何用“sel”标记的字符 tkinter

    我最近读到了受人尊敬的布莱恩 奥克利 Bryan Oakley 写的答案 Tkinter 将行号添加到文本小部件 其中他展示了有关解决问题的示例代码 当我尝试处理该代码并且它工作正常直到我复制或粘贴某些内容时 即我按Ctrl C or Ct
  • 构建时 GMSPlaceField 错误 - Swift 4.2

    我有一个正在使用的应用程序Google 的地点自动完成功能 所以我一直在遵循提供的示例代码 我已将 GooglePlace pod 添加到我的 podfile 中 因为我使用的是相同的 全屏控制 我正在使用他们的示例代码 在我尝试构建项目之
  • postInvalidate() 的作用是什么?

    有什么用postInvalidate 安卓中的功能 我在很多地方都看到过这个功能 当我谷歌搜索时 我得到了这么多 后无效 在 UI 线程上发布无效请求 我不知道那里的 无效请求 是什么意思 有人可以详细解释这里发生了什么吗 每个从 View
  • Docker:优雅地停止 django 服务器

    我在用着docker and docker compose 里面docker compose yml我有启动 django 服务器的命令 command run web sh 在 json 格式中 命令应在 exec 模式下运行 里面web
  • 在java中解析时间戳和时区?

    我正在尝试解析从数据库获取的时区格式时间戳字符串 字符串如下 SimpleDateFormat mdyFormat new SimpleDateFormat yyyy MM dd HH mm ss SSSSSZ SimpleDateForm
  • Pandas DataFrame - 根据其他列分配 1,0 值

    我有一个包含国家名称及其能源输出百分比的数据框 我需要添加一个新列 根据该国的能源产出是高于还是低于能源产出中位数 分配 1 或 0 一些虚拟代码是 import pandas as pd def answer df pd DataFram
  • 如何检查数组索引是否为空,如果是则检查下一个?

    任何人都知道如何检查数组索引 不仅仅是一个索引 是否为空 如果为空或为零则在其中放置一个值 如果所有索引都不为空 则打印错误 抱歉 遗憾的是我无法提供代表 import java util Scanner public class Myha
  • 识别并执行字符串上的 php 代码

    我想知道是否可以在字符串中执行php代码 我的意思是如果我有 string If i say I wanna get 有人知道怎么做吗 EDIT 看来没人明白 我想保存一个字符串 string If i say 在数据库中 然后渲染它 我可
  • 仅当值不为 None 时才应用函数的 Python 习惯用法

    函数正在接收许多都是字符串的值 但需要以各种方式进行解析 例如 vote count int input 1 score float input 2 person Person input 3 这一切都很好 除了输入也可以None在这种情况
  • Node-webkit 子进程产生 UNKNOWN 错误

    我正在尝试在 Windows 文件系统的其他位置启动 exe spawn require child process spawn game process spawn path join config values armaPath arm
  • 检测到 Azure 应用服务的 kudu 应用程序的 CPU 使用率过高

    我注意到我们的应用程序的 CPU 使用率很高 在诊断中我发现了以下消息 在您的应用服务计划中的 4 个实例中 仅 1 个实例上检测到 DemoApiApp 的 kudu 应用程序的 CPU 使用率较高 39 1 受影响实例在此期间的总体使用
  • 如何使用 SSIS 包中的 foreach 循环容器更改平面文件源?

    如何在 SSIS 中使用 foreach 循环容器更改平面文件路径 我有一个位于 c sourcefile 下的平面文件 该文件的名称是 Flat Date 例如 Flat01aug2011 csv 每天它都是由最近的日期生成的 所以我需要
  • Pandas - 将 HH:MM:SS.F 字符串转换为秒 - 警告:HH 有时会超过 24H

    我有以下数据框 flashtalking df Placement ID Average Interaction Time Total Interaction Time 2041083 00 01 04 12182 24 29 27 500
  • 有符号 64 x 32 整数除法

    假设您有一个机器指令 udive 它通过采用 32 位被除数 assume a b guaranteed not to overflow a 64bit dividend a h a l are hi lo 32bits respectiv