c# - 反转位移运算符/2 的幂

标签 c# bit-manipulation bitwise-operators bit-shift

我的 C# 程序中有以下简单等式,用于将数字转换为结果值:

sectorSize = 1 << sectorShift;

是否有某种逆向操作也能让我走另一条路?

sectorShift = ???

我知道您可以实现循环,但这有点矫枉过正。我以前从来没有这样做过,所以我不知道,也无法在网上找到任何相关信息。当 sectorSize 是 2 的幂时,我需要的等式只需要产生有效结果;不管我在乎什么,域的其余部分都可以下 hell 。

最佳答案

这里有五种方法可以在 C 中执行此操作。将它们转换为正确的 C# 留作练习。 要格外小心。

http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogObvious

坦率地说,我个人总是会顺其自然。我不清楚为什么您认为简单且明显正确的代码是“矫枉过正”。

关于c# - 反转位移运算符/2 的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9915437/

相关文章:

C++ 为什么按位运算符 ~ 在 uint64_t 和 uint8_t 上返回不同的类型?

c++ - 什么时候以及为什么要在代码中使用位域?

c# - 在 PowerShell 中,如何确定当前驱动器是否为网络驱动器?

c# - 使用 EWS 发送电子邮件

C# - 检查哪个事件更改/访问了属性

c - 如何从数字中提取某些位并将它们放入新变量中?

javascript - 如何在二进制上应用按位右移运算符?

c# - 如何以编程方式将字符串转换为数学表达式

python - int 如何作为 bool 语句求值?

c 从缓冲区读取 4 字节小端序号的代码