模是否在幕后使用浮点数
Does modulus use floating point behind the scenes?
在C++中,模数是否在幕后使用任何浮点数学?
int x = 1234;
int y = 5678;
int z = y % x; // any floating point used underneath to calculate the integer result?
作为背景,我在思考这个问题,他说如果没有 FP 仿真,他就不能使用任何浮点数。然后我意识到我不确定模运算符是否使用了任何类型的浮点汇编操作。我的猜测是没有,但我想确定。
No 1。请参阅此类运算符的一些实现。
-
汇编语言 - 如何做模? - "[在 x86 中] DIV 指令 [..]给出商和余数"
-
处理器上的汇编模算法,没有除法运算符
1 只要观察到的行为在规范范围内,实现就可以做任何它想做的事情。但是,我不知道有任何实现会选择使用浮点运算,也想不出这样做的一般理由。
不,它不使用浮点运算。结果可以非常简单地获得
z = y - ( y/x ) * x;
早期的计算机有时没有浮点协处理器。因此,此类操作是通过使用使用整数操作的机器命令来执行的。
这取决于
"C++"如何计算"幕后"模数的实现
相关文章:
- 是否可以在 for 循环中添加两个浮点数?
- 是否有 C++20 浮点数的包装器,使我能够默认宇宙飞船操作员?
- 在打印浮点数之前检查浮点数是否为偶数
- 整数浮点数除以自身是否保证为 1.f?
- 如何确定以浮点数、双精度位数为单位的有效宽度:是否有标准定义?
- 假设浮点数或双 NaN 将始终作为字符串"nan"是否安全?
- 将布尔值或浮点数分配给int32_t是否安全?
- 使用memcpy将浮点数组复制到uint8_t的数组是否有效
- 浮点数的二进制相等比较是否正确
- 怪异的方法来检查浮点数是否为负
- 是否可以对浮点数近似的不同形式进行分类
- 将整数除法到整数是否需要强制转换以浮点数或双精度以更精确
- 模是否在幕后使用浮点数
- 在C++中对浮点变量执行算术时,是否始终需要使用浮点数文字
- 如何静态检查模板的类型 T 是否为 std::vector<U>,其中 U 是浮点数、双精度数或积分
- 对某些标准流类插入和提取浮点数是否保留其值
- 如何检查浮点数是否为整数
- 浮点数 - C++浮点数是否保证无穷大
- 如何判断双精度浮点数是否可以安全地存储为单精度浮点数
- 如何检查一个巨大的浮点数是否为整数