c# - 如何使用左移运算符计算大幂次的 2 的幂次?

标签 c#

我想在不使用 Math.Pow 的情况下计算 2 的幂,因为我想避免使用 double。所以我需要一个完整的整数值。我以为我可以只使用左移运算符,但当我的幂超过 30 时,它给出负数表示 31 次幂,而给出大于 31 的幂次为 1。

我的方法是这样的

    public static long TwoPowX(int power)
    {
        return (1 << power);
    }

有什么想法吗?或者替代方法?

编辑: 我需要达到功率 96 甚至更高。

2^96 = 79,228,162,514,264,337,593,543,950,336。

最佳答案

文字 1是一个整数,所以整个表达式 (1 << power)在转换为 long 之前,也将被评估为 int 和 overflow。使用 1L相反。

public static long TwoPowX(int power)
{
    return (1L << power);
}

关于c# - 如何使用左移运算符计算大幂次的 2 的幂次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32912171/

相关文章:

c# - ImageMagick 扭曲

c# - Visual Studio 2010 中的 global.asax.cs 在哪里

c# - 在 C# 中使用 SQL 表而不是字典引用

c# - 带枚举的 RangeAttribute

c# - 如何确定所有任务何时完成

c# - 参数数据类型文本对于下层函数的参数 1 无效

c# - 在 .Net 字符串中表达大于 127 的字节值

c# - 如何将 AzureDefaultCredentials 与 Azure Fluent 结合使用?

c# - 工具提示问题

c# - 如何动态指定 List<> 函数的类型?