在C#中计算2的整数幂的简便方法?

Joh*_*ohn 12 c# integer

我确信这并不像我要做到的那么困难.

想要使用等价Math.Pow(double, double)但输出整数的东西.我担心浮点数的舍入错误.

我能想到的最好的是:

uint myPower = 12;
uint myPowerOfTwo = (uint)Math.Pow(2.0, (double)myPower);
Run Code Online (Sandbox Code Playgroud)

我想到了这个:

uint myPowerOfTwo = 1 << myPower;    // doesn't work
Run Code Online (Sandbox Code Playgroud)

但我得到的错误是运算符"<<"不能与int uint 类型的操作数一起使用.

有什么建议?一如既往地谢谢.

Bro*_*ass 28

你必须使用有符号整数作为移位运算符的第二个操作数(右侧):

int myPower = 12;
int myPowerOfTwo = 1 << myPower;   
Run Code Online (Sandbox Code Playgroud)

当然,您可以将结果转换为另一种数字类型,例如uint:

uint myPowerOfTwo = (uint) (1 << myPower);   
Run Code Online (Sandbox Code Playgroud)

来自MSDN:

左移运算符(<<)将其第一个操作数左移第二个操作数指定的位数.第二个操作数的类型必须是int.

  • @John你确定它不说*和*?含义:组合? (3认同)