2012-02-07 67 views
1

我有一個數組作爲(用零和1填充) - > ArrayWithContent [5] = {1,0,0,1,1}; 現在我想把它轉換成一個變量,這樣我就可以讀出這個值的總和。如何將元素從數組中移動到變量中C

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

我知道我沒有這個毛病,什麼是正確的方法是什麼?指針和地址?

回答

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

這裏:

  • (Variable << 1)轉移Variable一個位到左側的當前值。
  • ... | ArrayWithContent[i]ArrayWithContent[i]取代移位值的最低位。
  • 最後,Variable = ...將結果分配回Variable
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. 
} 
0

如果在大端格式的數據,
......無論是正確的數量和OR一切融合在一起

每個值偏移
value = 0; 
for (i = 0; i < nelems; i++) { 
    value |= (ArrayWithContent[i] << (nelems - i - 1)); 
} 

...或保持1位和OR

value = 0; 
for (i = 0; i < nelems; i++) { 
    value <<= 1; 
    value |= a[i]; 
} 
的下一個比特移位的電流值