Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: ZüNdFoLGe en 07 de Diciembre de 2006, 09:57:55 PM

Título: ShiftL/ShiftR y bits de relleno
Publicado por: ZüNdFoLGe en 07 de Diciembre de 2006, 09:57:55 PM
Es posible que al hacer corrimiento hacia la izq. << o der. >> el bit de relleno sea 1 en vez de 0 ?
Título: Re: ShiftL/ShiftR y bits de relleno
Publicado por: ZüNdFoLGe en 07 de Diciembre de 2006, 10:12:40 PM
Cómo puedo hacer para que al hacer corrimiento hacia la izq. << o der. >> el bit de relleno sea 1 en vez de 0 ?

O sea, va un ejemplo:
11010101
corrimiento de 3 lugares a la izq. a partir del tercer bit: (resultado en c++)
10101000
lo que quiero hacer es:
10101111
en la misma sentencia...
hay alguna forma o debo hacerlo a mano ?

salu2

edit: Mal lo mío, respondí sin darme cuenta
Título: ShiftL/ShiftR y bits de relleno
Publicado por: blau en 07 de Diciembre de 2006, 10:15:53 PM
(x shitr 1) or 0x8000  para un byte
(x shitf 1) or 0x1

¿te vale esto?
Título: ShiftL/ShiftR y bits de relleno
Publicado por: ZüNdFoLGe en 08 de Diciembre de 2006, 11:24:15 AM
Cita de: "blau"(x shitr 1) or 0x8000  para un byte

por qué el or con 0x8000 ?
Título: ShiftL/ShiftR y bits de relleno
Publicado por: blau en 10 de Diciembre de 2006, 01:23:57 PM
Me pierde el hexadecimal... ;)


Porque equivale a 1000 0000 en binario,

o si te es mas sencillo a 128 en decimal
Título: ShiftL/ShiftR y bits de relleno
Publicado por: shephiroth en 10 de Diciembre de 2006, 01:49:45 PM
Cuidado con los tamaños de variables!!!!!

Si estais usando byte, usad 0x80.....si usais 2 o 4 bytes, usad 0x8000 y 0x80000000 respectivamente. El 0x01 se puede usar independiente de cuantos bytes useis.