如何将数组中的元素移动到C中的变量中

时间:2012-02-07 08:58:33

标签: c arrays for-loop bit-manipulation

我有一个数组(用零和一个填充) - > ArrayWithContent [5] = {1,0,0,1,1}; 现在我希望将其转换为变量,以便我可以读出它的总值。

0001 0011 = 19

for(i=0; i<5; i++)
{
    OneValue = ArrayWithContent[i]; 
    Variable = OneValue;
    Variable >>= 1;             // Send the zero or one to right.... continue to fill it up
}

显示变量的内容我现在希望它显示值19。

我知道我做错了,正确的方法是什么?指针和地址?

3 个答案:

答案 0 :(得分:5)

Variable = 0;
for (i = 0; i < 5; i++)
{
    Variable = (Variable << 1) | ArrayWithContent[i];
}

下面:

  • (Variable << 1)Variable的当前值向左移一位。
  • ... | ArrayWithContent[i]ArrayWithContent[i]替换移位值的最低有效位。
  • 最后,Variable = ...将结果分配回Variable

答案 1 :(得分:1)

这是你的循环,修复:

for(i=0; i<5; i++)
{
    OneValue = ArrayWithContent[i]; 
    Variable <<= 1;     // You want to shift to the left to keep the previous value.
    Variable |= OneValue; // You need to OR the value, else you'd erase the previous value.
}

答案 2 :(得分:0)

如果您的数据采用大端格式,则 ...要么将每个值移动正确的数量,要么将所有内容一起移动

value = 0;
for (i = 0; i < nelems; i++) {
    value |= (ArrayWithContent[i] << (nelems - i - 1));
}

...或者继续将当前值移位1位并将

中的下一位移位
value = 0;
for (i = 0; i < nelems; i++) {
    value <<= 1;
    value |= a[i];
}