jsj*_*jsj 4 c bit-manipulation
是否存在根据置换表置换位的模式或标准方法,该置换表指定结果的每个位位置 - 从源获取哪个位置.
即表0322
会产生的结果0011
,从0010
我目前的策略是读表的每个条目 - 创建一个位掩码,然后执行二进制掩模和源的AND,OR`ing与累积的结果.
所以处理第一表项:
result |= ( ( (int) pow(2,table[0]) & source)
Run Code Online (Sandbox Code Playgroud)
这似乎只是昂贵的和重复和家酿.我错过了一些明显标准的简单方法吗?
这真的很昂贵,使用该pow
功能可实现此.重复和家庭酿制的部分是不可避免的.更好的办法
result = 0;
for ( i = 0; i < table_size; i++ )
{
result <<= 1;
if ( source & (1 << table[i]) )
result |= 1;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1180 次 |
最近记录: |