标签: modulus

C++中是否有标准的循环整数类?

我有一个在我正在编写的代码中非常常见的问题,我希望有一个整数只能存在于范围为[start,end]的特定范围内.基本上我希望能够做类似以下的事情:

cyclic_int ci(4, 8);

ci = 4;
assert(ci == 4);
ci += 3;
assert(ci == 7);
ci += 2;
assert(ci == 5);
assert(ci == 13);
Run Code Online (Sandbox Code Playgroud)

这应该都归于真实.基本上,类自动为我应用模数(%),整数充当我初始化它的范围内的循环整数.我可以自己实现这个类,并重载所有常用运算符,使其与普通整数很好地工作,但它似乎是一个有用的类,以前有人可能已经做过.

所以我的问题是,是否有一个像这样的普通类,每个人都在使用或者我想以错误的方式做这个,并且有更好的简单方法.(我的目标是不必经常考虑应用%运算符或任何类似的函数)谢谢.

编辑:我决定写一个自己的,只是为了好玩:http://github.com/robertmassaioli/wrapping_number

c++ encapsulation integer class modulus

11
推荐指数
1
解决办法
524
查看次数

PHP中-13%64 = -13怎么样?

源自这个问题:(Java)java如何使用负数进行模数计算?

在哪里强制PHP返回正51?

更新
寻找要修复的配置设置,而不是硬猜测

还是像bcmath这样的其他数学函数?

更新
并不完全相信java答案,因为它没有考虑负模数 -13+(-64) =?

php math modulus

11
推荐指数
2
解决办法
5154
查看次数

从SSH服务器获取公钥

我很长时间都在寻找这个.

我需要从SSH服务器中提取并获取模数和指数.

例如,我知道,在服务器xxx.xxx.xxx.xxx上运行ssh(我可以连接到此服务器/ ping),但我不知道用户名和密码,因此无法登录.

我需要得到该服务器的公共RSA密钥的模数和指数.

我发现,ssh-keyscan可以得到模数+指数(来自文档),但仅限于使用ssh-rsa1.如果我尝试使用ssh-keyscan获取ssh-rsa(2)公钥,我无法从输出模数和指数中检索.

可能吗 ?

ssh rsa certificate modulus

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

在几秒钟内将数字拆分为天,小时,分钟和秒?

我听说使用%大多数编程语言中的模数运算符可以实现这一点.真正的问题是,怎么样?我不熟悉模数是如何工作的,所以我在过去使用它时遇到了困难.鉴于目前的时间是自1970年以来的几秒钟,1307758473.484我怎样才能计算出使用模数的天数,即几小时,即几分钟?

我基本上打算像这样格式化:"5年,10天,12小时,7分钟和18.56秒".我该怎么做?我真的很有兴趣学习这背后的逻辑,对简单的插入式解决方案感兴趣.

theory math logic modulus

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

当anyValue是双倍时,为什么声纳中的anyValue%1"愚蠢的数学"?

SonarQube引发了重大违规行为不应该在我的代码中执行傻数学.描述说

某些数学运算只是愚蠢而且不应该执行,因为它们的结果是可预测的.

特别是,anyValue%1是愚蠢的,因为它总是返回0.

在我的情况下,anyValue是一个双倍.而这个工程按预期我.这是实际的代码:

double v = Double.parseDouble(Utils.formatDouble(Double.valueOf(value.getValue()), accuracy.intValue()));
boolean negative = v < 0;
v = Math.abs(v);
long deg = (long) Math.floor(v);

v = (v % 1) * 60;
Run Code Online (Sandbox Code Playgroud)

分析器假设我的变量是一个int(这是他们的错误)?还是我错过了别的什么?

java modulus sonarqube

10
推荐指数
1
解决办法
724
查看次数

模数大数的力量

我正在尝试实施SAFER +算法.该算法需要找到幂函数的模数,如下所示:

pow(45, x) mod 257
Run Code Online (Sandbox Code Playgroud)

变量x是一个字节,因此可以在0到255之间.因此,如果使用32位或64位整数实现,则幂函数的结果可能非常大,从而导致不正确的值.

我该如何进行此计算?

language-agnostic algorithm math modulus

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

某些语言是否允许负模数?

我很好奇这些语言(Java,C ...)忽略了模数运算的数学定义.

在模块操作中返回负值的重点是什么(根据定义,应该总是返回正数)?

c java math modulus

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

一个聪明的自制模数实现

我正在使用一些传统软件编程PLC(RSLogix 500,请不要问),它本身不支持模数运算,但我需要一个.我没有访问:模数,整数除法,局部变量,截断操作(虽然我可以通过舍入来破解它).此外,我可用的所有变量都在按数据类型排序的表中列出.最后,它应该适用于浮点小数12345.678 MOD 10000 = 2345.678.

如果我们做出等式:

dividend / divisor = integer quotient, remainder
Run Code Online (Sandbox Code Playgroud)

有两个明显的实现.

实现1:执行浮点除法:dividend / divisor = decimal quotient.然后破解一起截断操作,你找到了integer quotient.将它乘以divisor并找出它与之间的差异dividend,从而产生remainder.

我不喜欢这个,因为它涉及一堆不同类型的变量.我无法将变量"传递"到子程序,因此我只需要分配位于多个不同变量表中的一些全局变量,并且很难遵循.不幸的是,"难以遵循"非常重要,因为它需要足够简单,以便维护人员能够搞砸.

实现2:创建一个循环,同时dividend > divisor divisor = dividend - divisor.这是非常干净的,但它违反了PLC编程的一个重要规则,即永远不会使用循环,因为如果有人无意中修改了索引计数器,你可能会陷入无限循环,机器会变得疯狂或无法恢复故障.Plus循环很难进行维护以进行故障排除.另外,我甚至没有循环指令,我必须使用标签和跳转.好恶.

所以我想知道是否有人有任何聪明的数学黑客或更聪明的模数实现.我可以访问+ - */,exponents,sqrt,trig函数,log,abs值和AND/OR/NOT/XOR.

algorithm math plc modulus

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

确定$ x是否可以在PHP中均衡地被$ y整除

我只是想知道$ x是否可被$ y整除.例如,假设:

$x = 70;
$y = .1;
Run Code Online (Sandbox Code Playgroud)

我尝试的第一件事是:

$x % $y
Run Code Online (Sandbox Code Playgroud)

这似乎在两个数字都是整数时有效,但如果它们不是则失败,如果$y是小于1的小数返回"除以零"错误,那么我尝试:

fmod($x,$y)
Run Code Online (Sandbox Code Playgroud)

哪个返回同样令人困惑的结果,"0.099999999999996".

php.net说fmod():

返回除数(x)除以除数(y)的浮点余数

好吧根据我的计算器70 / .1 = 700.这意味着余数为0.有人可以解释一下我做错了什么吗?

php floating-point modulus

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

对于整数模数计算,fmod是否快于%

刚刚在一些旧的src代码中找到以下行:

int e = (int)fmod(matrix[i], n);
Run Code Online (Sandbox Code Playgroud)

在哪里matrix是一个数组int,n是一个size_t

我想知道为什么使用fmod而不是%我们有整数参数,即为什么不:

int e = (matrix[i]) % n;
Run Code Online (Sandbox Code Playgroud)

难道有可能是选择性能的原因fmod%或者是它的代码只是一个陌生的位?

c integer modulus

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