我定义了这样的位:
#define b00_on 0x0000000000000001
#define b01_on 0x0000000000000002
#define b02_on 0x0000000000000004
#define b03_on 0x0000000000000008
#define b04_on 0x0000000000000010
每个位对应一个数组偏移量,如下所示:
array bit
offset
0 b00_on
1 b01_on
2 b02_on
3 b03_on
4 b04_on
我正在寻找一个将位值转换为数组偏移的函数,我希望避免涉及乘法,除法,根等的计算成本高昂的操作。
目前,我正在使用开关进行这样的翻译:
- (int) convertBitToArrayOfst: (int64_t) bit
{
int n;
switch( bit )
{
case b00_on: n=0; break;
case b01_on: n=1; break;
case b02_on: n=2; break;
.
.
.
case b63_on: n=63; break;
}
return( n );
}
但我对此并不感到兴奋。有人建议采用更优雅,低开销的方式进行翻译吗?