c - 在没有按位运算符的情况下执行计算

标签 c algorithm

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

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/

相关文章:

c - 查找数组中未出现两次的整数

algorithm - 创建整数数据结构并查找给定整数位于哪个组件

algorithm - 背包算法 : Why we use wt[i-1] instead of wt[i]

performance - 查找最大/最小连续异或值

c - 作业-C程序设计-递归程序

c - 使用epoll主循环延迟执行

c - 这种严格的别名未定义行为如何?

C 在float数组中找到2个最大的数字和2个最小的数字

c++ - 这段代码是如何工作的?

java - 使用二分搜索返回的缺失元素位置时的代码更清晰