如何获得2的更高功率?

时间:2016-02-18 08:46:44

标签: c# matlab ilnumerics

我希望将matlab代码转换为c#.and 在matlab代码中

nfft=2^nextpow2(nn);

其中NEXTPOW2(N)表示在matlab中的下一个更高的2的幂。

所以我们如何在c#代码中或在ilnumerics Lab的帮助下自己做同样的功能。 ?

3 个答案:

答案 0 :(得分:3)

This可能是最有效的方式,前面也提到了here on SO

temp = b, a + b 
a = temp[0]
b = temp[1]

答案 1 :(得分:2)

如果我理解你的问题:

x = 129;
NextPow = round(2^ceil(log2(x))) % Gives 256 for x = 129
                                 % Gives 2 for x = 2
                                 % Gives 16 for x = 15

答案 2 :(得分:0)

在 .NET Core 中,您可以使用 BitOperations.LeadingZeroCount()BitOperations.Log2() 来获取最高位的位置,然后

return 1L << (BitOperations.Log2(nn - 1) + 1); // or
return 1L << (63 - BitOperations.LeadingZeroCount(nn));

如果 nnulong。如果 nnuint

,则将 63 更改为 31

上述位操作是映射到硬件指令的内在函数,因此它们非常快