Pasar bit a bit.

Hola,
Necesito pasar datos de una variable byte con 8 bits a otra de la siguiente forma.

Variables iniciales:
byte x = 00000001 byte y = 01000011

Ir pasando bits

0-) 00000001 01000011 (iniciales)
1-) 00000010 10000110
2-) 00000101 00001100
3-) 00001010 00011000
4-) 00010100 00110000
5-) 00101000 01100000
6-) 01010000 11000000
7-) 10100001 10000000

Básicamente consiste en ir desplazando uno a uno hacia la izquierda los bits de la segunda cadena a la primera e ir completando con ceros el final de la segunda cadena.

Para completar con ceros , utilizo el operador “bitshift left” de esta forma:

byte x = B11111111;
byte resultado = x << 1; // resultado es 11111110

Pero aun no he encontrado nada para desplazar los bits. Si pudiera utilizar variables con capacidad para 16 bits todo seria mas fácil, ya que solo tendria que unir las dos de 8 bits (que por cierto, tampoco se cómo hacerlo)
,

//no es posible compilarlo
byte x = B1111111111111111; 
byte resultado = x << 1; //resultado es 1111111111111110 (ya se ha desplazado)

Alguna sugerencia?

Saludos

Hola,

No sé si te he entendido bien, pero para unir dos variables int en una unsigned int, es decir, dos de 8 bits en una de 16bits:

unsigned int myvar16;
byte var1;
byte var2;

myvar16=(var1<<8)| (var2);

Es decir, OR (ó suma) de la primera variable desplazada 8 bits hacia la izquierda más la segunda variable. La variable var1 sería el byte más significativo.

Espero que esto te ayude…

Saludos

Igor R.