位向量到0和1的整数向量

时间:2015-03-03 04:28:20

标签: c bitmap

我有一个char []向量,表示位图,我想将其转换为整数向量,其中char数组中的第n位对应于整数数组中的第n个条目。

我只能想到这样做: 遍历每个字节,然后"提取第n位"每次。这很简单,但似乎不必要地慢。

我可以想到一些优化,如果我使用"<<"并检查该字节的其余部分是否为0,我可以跳过几个条目,但这不会增加太多,因为我希望我的矢量密集。

关于如何提高效率的任何想法

由于

1 个答案:

答案 0 :(得分:0)

我认为通过检查查看char是否正在迭代是< 2 ^ i我正在检查的位是你接近问题的下限。

在下面的代码中,我使用(1<< j)等于2 ^ j和&是按位和运算符,它将检查该索引处的位的值是1还是0。

考虑到字节的长度是恒定的,这在线性时间内运行。

int i;
for(i=0;i<sizeof charVector;i++){
    int j;
    for(j=0;j<8;j++){
        if (charVector[i]< (1 << j)){
            break;
        } else {
            intVector[i*8 + j] = charVector[i] & (1 << j);
        }
     }
}