将位偏移转换为整数的最佳方法

时间:2015-01-14 22:02:09

标签: ios objective-c

我定义了这样的位:

#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 );
  }

但我对此并不感到兴奋。有人建议采用更优雅,低开销的方式进行翻译吗?

0 个答案:

没有答案