lundi 7 décembre 2015

Bit shifting in signed char C++11

I have a k (k > 0 && k < 8) number of csv file with 0 or 1 written into .

My C++ code reads from the file and stores the content of the file into different vector.

I wished to merge (concat ) then store them in a single vector.

File 1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0     Stored in vector1          
File 2: 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0     Stored in vector2        
File 3: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0     Stored in vector3            
File 4: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0     Stored in vector4          
File 5: 1 1 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0     Stored in vector5           

I wished to store them in vector<signed char> vectork.          

with vectork[0] stored where each element has bit pattern as [0 0 0 0 1 0 1 1] -- first col         
with vectork[1] stored where each element has bit pattern as [0 0 0 0 1 1 0 1] -- second col         
with vectork[2] stored where each element has bit pattern as [0 0 0 0 1 0 0 0] -- third col        

I tried with      

    vectork.resize(vector1.size(),0);
    for ( int i = 0; i < vector1.size(); i++ ) {
       vectork[i] = vectork[i] << 1;
      if (vector1[i] == 1) vectork[i] +=1;
      vectork[i] << 1;
      if (vector2[i] == 1) vectork[i] +=1;
      vectork[i] << 1;
      if (vector3[i] == 1) vectork[i] +=1;
      vectork[i] << 1;
      if (vector5[i] == 1) vectork[i] +=1;
    }

Is the above working correct?

Aucun commentaire:

Enregistrer un commentaire