0

我想在没有按位运算符的情况下执行此计算。

unsigned result = (1u << 5);

结果将是 32。我知道这是将二进制文件转换1100000但我想在没有位运算的情况下执行相同的操作。

4

1 回答 1

1

既然你知道 2 5是 32,你可以使用:

unsigned int result = 1u * 32u; // or just 32u if it's always '1u *'.

否则,如果你只想使用位移值,有两种方法。第一个是循环:

unsigned result = 1u;
for (size_t i = 0; i < 5; result *= 2u, i++);

或非循环版本:

static unsigned int shft[] = {1u, 2u, 4u, 8u, 16u, 32u, ... };
unsigned int result = 1u * shft[5]; // or just shft[5] if it's always '1u *'.
于 2012-11-25T02:25:03.933 回答