标签: integer-division

Visual C++中的128位内部分割

我想知道在Visual C++中是否真的没有128位除法内部函数?

有一个名为_umul128()的64x64 = 128位乘法内部函数,它很好地匹配MUL x64汇编程序指令.

当然,我假设也会有一个128/64 = 64位内部分区(对DIV指令进行建模),但令我惊讶的是,Visual C++和英特尔C++似乎都没有它,至少它没有在intrin.h中列出.

有人可以证实吗?我尝试grep'ing在编译器可执行文件中的函数名称,但首先找不到_umul128,所以我想我看错了.

更新:至少我现在在Visual C++ 2010的c1.dll中找到了模式"umul128"(没有前导下划线).所有其他内在函数都列在它周围,但不幸的是没有"udiv128"之类的东西:(所以它似乎他们真的"忘记"实施它.

澄清一下:我不只是在寻找128位数据类型,而是在C++中将128位标量int除以64位int的方法.无论是一个内在的功能本地 128位整数的支持会解决我的问题.

编辑:答案是否定的,Visual Studio 2010或2012中没有_udiv128内在函数.

integer-division intrinsics visual-c++ 128-bit

10
推荐指数
4
解决办法
5352
查看次数

Python中的"变量// =值"语法是什么意思?

我遇到了代码语法d //= 2,其中d是一个变量.这不是任何循环的一部分,我不太明白.
有人可以开导我吗?

python python-2.x integer-division python-3.x floor-division

10
推荐指数
2
解决办法
1264
查看次数

整数除法与商数相比:为什么这个令人惊讶的结果呢?

//Python 的"整数除法"运算符让我感到惊讶,今天:

>>> math.floor(11/1.1)
10.0
>>> 11//1.1
9.0
Run Code Online (Sandbox Code Playgroud)

文档读取"x和y"的"(浮动)商".那么,为什么math.floor(11/1.1)等于10,但是11 // 1.1等于9?

python python-2.x integer-division floor python-3.x

9
推荐指数
1
解决办法
6936
查看次数

模数运算符的反面?

我记得在java中,模运算符可以被反转,这样你可以反转它,而不是看到余数是什么操作,所以它会告诉你很多次数除以:

Console.WriteLine(1000 % 90);
Console.WriteLine(100 % 90);
Console.WriteLine(81 % 80);
Console.WriteLine(1 % 1);
Run Code Online (Sandbox Code Playgroud)

输出:

  • 10
  • 10
  • 1
  • 0

示例由DotNetPerls提供

我想看看'80'进入'81'多少次,而不是看剩下的.哪个应为1,余数为1.

c#modulo运算符是否支持此行为?如果没有,怎么可能达到预期的行为?用最少的代码请...:D

编辑:

我想答案是简单的,比如将两个数字分开并去除' - .#'值并保持整数' - ' - '.我知道这一点,但必须有一个更明智的方式这样做?

c# integer-division

9
推荐指数
2
解决办法
3万
查看次数

是什么决定了整数m%n的符号?

Python中的模数令人困惑.

在Python中,%运算符正在计算余数:

>>> 9 % 5
4
Run Code Online (Sandbox Code Playgroud)

然而:

>>> -9 % 5
1
Run Code Online (Sandbox Code Playgroud)

为什么结果1?不是-4吗?

python modulo integer-division

9
推荐指数
2
解决办法
6855
查看次数

为什么在Python中-103/100 == -2但103/100 == 1?

为什么-103/100 == -2103/100 == 1用Python?我似乎无法理解为什么.

python integer-division

9
推荐指数
1
解决办法
309
查看次数

使用整数除法时,用"a/b/c"替换"a /(b*c)"是否安全?

它是安全的更换a/(b*c)a/b/c使用上的正整数整数除法时a,b,c,还是我在可能失去信息?

我做了一些随机测试,找不到一个例子a/(b*c) != a/b/c,所以我很确定它是安全的,但不太确定如何证明它.

谢谢.

language-agnostic math integer-division

9
推荐指数
1
解决办法
816
查看次数

Python 乘法相当于整数除法

在Python中,使用//除法强制结果为整数。乘法有等价的吗?

例如,假设我有一个整数W,我按 float 缩放f。最好有一个像 这样的运算符.*,这样:

int(W*f)==W.*f

会是真的。

python syntactic-sugar integer-division

9
推荐指数
2
解决办法
1万
查看次数

快速硬件整数除法

整数除法的硬件指令历来非常慢。例如,对于 64 位输入,Skylake 上的 DIVQ 延迟为 42-95 个周期 [1](吞吐量倒数为 24-90)。

然而,有更新的处理器,其性能要好得多:Goldmont 具有 14-43 延迟,Ryzen 具有 14-47 延迟 [1],M1 显然具有“每分频 2 个时钟周期的吞吐量”[2],甚至 Raspberry Pico 也具有“8 -循环有符号/无符号除法/模电路,每个核心”(尽管这似乎适用于 32 位输入)[3]。

我的问题是,发生了什么变化?是否发明了新的算法?无论如何,新处理器采用什么算法进行除法?

[1] https://www.agner.org/optimize/#manuals
[2] https://ridiculousfish.com/blog/posts/benchmarking-libdivide-m1-avx512.html
[3] https://raspberrypi。 github.io/pico-sdk-doxygen/group__hardware__divider.html#details

performance x86 arm cpu-architecture integer-division

9
推荐指数
1
解决办法
3612
查看次数

Raku 的“mod”操作符有什么意义?

我之前错误地认为%运算符返回余数,而mod运算符返回模数(当操作数均为正数或均为负数时,余数和模数相同,但当一个操作数为正而另一个操作数为负时,余数和模数不同。比较 Raket\' s余数函数)。

\n

然而,这根本不正确 \xe2\x80\x93 两者%mod返回模数;都不返回余数。事实上,如果使用相同的参数调用,它mod看起来总是会返回完全相同的值。%据我所知,唯一的区别是%可以使用非整数参数调用,而如果使用ormod以外的任何参数调用则抛出异常。Int:Dint

\n

那么,有什么意义呢mod?使用它是否会带来一些性能提升(也许可以通过节省优化器的一些专业化工作?)或者我缺少一些其他差异?

\n

modulo integer-division rakudo raku

9
推荐指数
1
解决办法
250
查看次数