我在说这个:
如果我们有字母'A',十进制为77,十六进制为4D.我正在寻找获得D的最快方法.
我想到了两种方式:
给定x是一个字节.
x << 4; x >> 4
x %= 16
还有其他方法吗?哪一个更快?
我需要计算大数模数,如:
<?php
$largenum = 95635000009453274121700;
echo $largenum % 97;
?>
Run Code Online (Sandbox Code Playgroud)
它不起作用...因为$ largenum对于PHP中的int来说太大了.
知道怎么做吗?
我需要能够为a和b的非常大的值计算(a ^ b)%c(它们分别是推动限制,当你尝试计算a ^ b时会导致溢出错误).对于足够小的数字,使用标识(a ^ b)%c =(a%c)^ b%c可以工作,但如果c太大,这实际上没有帮助.我写了一个循环来手动执行mod操作,一次一个:
private static long no_Overflow_Mod(ulong num_base, ulong num_exponent, ulong mod)
{
long answer = 1;
for (int x = 0; x < num_exponent; x++)
{
answer = (answer * num_base) % mod;
}
return answer;
}
Run Code Online (Sandbox Code Playgroud)
但这需要很长时间.是否有任何简单快速的方法来执行此操作,而不必实际使用b AND的功能而不使用耗时的循环?如果所有其他方法都失败了,我可以创建一个bool数组来表示一个巨大的数据类型,并找出如何使用按位运算符来实现这一点,但必须有一个更好的方法.
如果它是密码学中的32位操作系统,系统如何执行2 ^ 56模7?
它是如何存储在内存中的?
当用大数字进行模数计算时,你会遇到巨大的性能惩罚mod (123456789^987654321) n.相反,你必须使用自己的^内部计算mod n进行中间计算.
当然,我可以很容易地实现自己的功能,但是我必须为每个操作明确说出"mod n".相反,可以构建一个数值表达式树并推迟实际计算,并且在最终状态模数n只有一次.(见下面的代码)
我开始这是为了清楚地表明我的意思,但我想知道是否已经存在这种实现,它看起来非常有用,所以有人应该实现它.
module Modulo where
data Expr =
V Integer
| Plus Expr Expr
| Mult Expr Expr
deriving (Eq, Show)
instance Num Expr where
(+) = Plus
(*) = Mult
fromInteger = V
eval :: Integer -> Expr -> Integer
eval m (V i) = i `mod` m
eval m (Plus e1 e2) = (eval m e1 + eval m e2) `mod` m
eval m (Mult e1 e2) = (eval …Run Code Online (Sandbox Code Playgroud) 我正在Java中实现一个Skein哈希函数,我有一个问题,其中一些添加模块2 ^ 64的部分.据我所知,java中的long有max value = 2 ^ 63-1.所以我的问题是,如何实现这个模运算.(Skein中的所有操作都是64位字.)
解决了一个错误,我得到了一些有趣的发现.
这个程序的结果
static void Main(string[] args)
{
int i4 = 4;
Console.WriteLine("int i4 = 4;");
Console.WriteLine("i4 % 1 = {0}", i4 % 1);
double d4 = 4.0;
Console.WriteLine("double d4 = 4.0;");
Console.WriteLine("d4 % 1 = {0}", d4 % 1);
Console.WriteLine("-----------------------------------------------------------");
int i64 = 64;
double dCubeRootOf64 = Math.Pow(i64, 1.0 / 3.0);
Console.WriteLine("int i64 = 64;");
Console.WriteLine("double dCubeRootOf64 = Math.Pow(i64, 1.0 / 3.0) = {0}", dCubeRootOf64);
Console.WriteLine("dCubeRootOf64 = {0}", dCubeRootOf64);
Console.WriteLine("dCubeRootOf64 % 1 = {0} ?????????????? Why 1. ??????????", dCubeRootOf64 % …Run Code Online (Sandbox Code Playgroud) 我在测试splice迭代数组时是如何工作的,并且不明白为什么0留在列表中?
var array = [2, 5, 9, 14, 0, 1, 3, 6, 7];
for (var i = 0; i < array.length; i++) {
if (array[i]%2 == 0) {
array.splice(i,1);
}
}
//0 % 2 == 0 is true, and yet
//array = [5, 9, 0, 1, 3, 7]
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来找到一系列数字的模数,如:(a1 + a2 + a3 + a4 + ... + an)mod x
是否存在模数函数的任何方式/属性,以便我可以从序列中的各个数字mod计算此序列的mod.
在今天编写着色器程序时,遇到了我必须%用来查找余数的情况.GLSL给了我一个错误,说它在当前版本中不可用.
我试过几个问题.GLSL不支持递归函数和while循环,如果我想创建一个可以给我结果的函数,则需要它(a % b).
所以,我现在卡住了.有人可以帮我弄这个吗?
编辑.我试图使用本网站的一些着色器代码作为参考代码来模拟CRT屏幕.我想修改某些行和列的像素颜色,所以我需要使用模运算符.
起初,我认为模数函数是使用%运算符完成的.它不起作用,所以我尝试使用递归函数/ while循环作为模数函数的变通方法,它也不起作用.