gpt4 book ai didi

c# - 如何优化此方法中的数学运算?

转载 作者:太空宇宙 更新时间:2023-11-03 12:34:51 25 4
gpt4 key购买 nike

public static BitArray ShLo(BitArray B)
{
return new BitArray(System.BitConverter.GetBytes(Math.Floor((GetIntFromBitArray(B)/2) % (Math.Pow(2, 64)) )));
}
private static ulong GetIntFromBitArray(BitArray bitArray)
{
var array = new int[2];
bitArray.CopyTo(array, 0);
return (uint)array[0] + ((ulong)(uint)array[1] << 32);
}

这个方法需要很长时间。我可以优化它吗?

最佳答案

你可以通过将 mod 2^64 更改为位和操作来获得很好的加速:

public static BitArray ShLo(BitArray B)
{
return new BitArray(BitConverter.GetBytes(Math.Floor((double)((GetIntFromBitArray(B)/2) & Int64.MaxValue))));
}

我会重复评论中所说的内容,这看起来像你想要的BigInteger这将允许您对任意大小的整数进行数学和位级运算。

关于c# - 如何优化此方法中的数学运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com