我想在没有按位运算符的情况下执行此计算。
unsigned result = (1u << 5);
结果将是 32。我知道这是将二进制 1
转换为 100000
但我想按位不执行相同的操作操作。
最佳答案
因为您知道 25 是 32,所以您可以使用:
unsigned int result = 1u * 32u; // or just 32u if it's always '1u *'.
否则,如果你只想使用bitshift值,有两种方法。第一个是循环:
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 *'.
关于c - 在没有按位运算符的情况下执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13547722/