Appending bits in C/C++

Viewed 1578

I want to append two unsigned 32bit integers into 1 64 bit integer. I have tried this code, but it fails. However, it works for 16bit integers into 1 32 bit

Code:

char buffer[33];
char buffer2[33];
char buffer3[33];

/*
uint16 int1 = 6535;
uint16 int2 = 6532;
uint32 int3;
*/


uint32 int1 = 653545;
uint32 int2 = 562425;
uint64 int3;

int3 = int1;
int3 = (int3 << 32 /*(when I am doing 16 bit integers, this 32 turns into a 16)*/) | int2;


itoa(int1, buffer, 2);
itoa(int2, buffer2, 2);
itoa(int3, buffer3, 2);



 std::cout << buffer << "|" << buffer2 << " = \n" << buffer3 << "\n";

Output when the 16bit portion is enabled:

1100110000111|1100110000100 =
11001100001110001100110000100

Output when the 32bit portion is enabled:

10011111100011101001|10001001010011111001 =
10001001010011111001

Why is it not working? Thanks

2 Answers
Related