2015-03-20 6 views
-2

Как добавить два бинарных массива (8 бит) и сохранить результат в третьем двоичном массиве в visual studio 2010 - C++. Пример: А = В = 00100011 11011100 result_array = 11111111Добавление двух двоичных массивов в C++

Я пытался сделать это с помощью этого для преобразования B (имеет десятичное значение) в двоичное: станд :: строка binary2 = зЬй :: BitSet < 8> (В).нанизывать();

но когда я добавил два бинарных массива и хранить их в третий массив целого числа, третий массив не принимал какие-либо результатов значения от добавления операции и до сих пор имеющее значение по умолчанию (который является 00000000)

Благодаря заранее!

+0

Пожалуйста, покажите свой код. –

+0

Если входы были как 00000001, какой выход вы ожидаете? –

ответ

0

Вызов бинарные массивы булевы массивы и работа со спины:

#include <iostream> 

    int main(int argc, char* argv[]) 
    { 
     bool a[8]={0,0,1,0,0,0,1,1}; 
     bool b[8]={1,1,0,1,1,1,0,0}; 
     bool c[8]; 

     bool remainder=false; 
     for(int x=7;x>=0;x--) 
     { 
      unsigned sum=0; 
      if(remainder)++sum; 
      if(a[x])++sum; 
      if(b[x])++sum; 
      if(sum%2==1)c[x]=true; 
      else c[x]=false; 
      if(sum>1)remainder=true; 
      else remainder=false; 
     } 
     for(unsigned x=0;x<8;++x) 
     { 
      std::cout << c[x]; 
      if(x!=7)std::cout << ","; 
     } 
     std::cout << std::endl; 

     return 0; 
    } 
2

Если желаемый результат манипуляции побитовое (как):

10101011 
+11011100 
=11111111 

Тогда вам нужно использовать побитовое или (|)

uint8_t a = 0x23; 
uint8_t b = 0xDC; 

uint8_t c = a | b; 

Если вы хотите сделать простое дополнение, например, :

00000001 
+00000011 
=00000100 

Тогда это всего лишь дополнение.

uint8_t a = 1; 
uint8_t b = 2; 

uint8_t c = a + b; 
+0

00100011 & 11011100 00000000. Должно быть '' '(побитовое или) для получения 11111111 –

+0

Неясно, хочет ли OP' 0x01 + 0x01' '0x01' или' 0x10'. Если последнее, то ваше предложение не будет работать. –

+0

Два хороших комментария. В вопросе OP он утверждает, что желаемый результат равен '0xFF' (который на самом деле не является добавлением, а побитовым или). – Chad

Смежные вопросы