【发布时间】:2012-10-06 04:48:48
【问题描述】:
我有一个无符号整数N = abcd,其中a,b,c,d 表示从msb 到lsb 的位。我想得到以下号码
x1 = ab0cd
x2 = ab1cd
在 C 中使用按位运算最快的方法是什么?
我现在正在尝试如下
unsigned int blockid1 = N>>offset;
unsigned int key1 = (blockid<<(1+offset))|(((1<<offset)-1)&N);
unsigned int key2 = (key1)|(1<<offset);
这里的偏移量是我要插入0和1的位置。
【问题讨论】:
-
我猜按位运算都是常数时间运算,所以我不知道什么会传递为 fasted 位运算。如果你有什么工作,我不知道会有更快的方法来做这些事情。无论如何,这些操作在大多数情况下都会映射到 CPU 指令/
-
偏移量是否总是2?,位置总是在第3位??
-
不!偏移量可以是 0-30 之间的任何值
标签: c bit-manipulation