不按位运算符执行计算

Posted

技术标签:

【中文标题】不按位运算符执行计算【英文标题】:Perform a calculation without bitwise operator 【发布时间】:2012-11-25 02:21:51 【问题描述】:

我想在不使用位运算符的情况下执行此计算。

unsigned result = (1u << 5);

结果将是 32。我知道这是将二进制 1 转换为 100000 但我想执行相同的操作没有位操作。

【问题讨论】:

unsigned result = 1; for(int i = 0; i &lt; 5; ++i) result *= 2; 微积分?在哪里?不应该是计算吗? 【参考方案1】:

既然你知道 25 是 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 *'.

【讨论】:

以上是关于不按位运算符执行计算的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 按位运算符的解释

如何处理 javascript 中的 256 位数字并对它们执行按位运算?

JavaSE学习:按位运算—数据结构(顺序分支循环)

C语言里的按位异或运算符

C# 位运算符

如何在 linux 中对文件执行按位运算?