Delphi - shl y shr

 
Vista:

shl y shr

Publicado por Int3 (2 intervenciones) el 04/06/2003 21:27:59
hola, me gustaria que me explicaran si es posible, mas acerca de los operadores shr y shl, lei que hacen un shift a los bytes, pero no entiendo que es shift, gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:shl y shr

Publicado por Ernesto De Spirito (706 intervenciones) el 05/06/2003 00:06:30
SHL realiza un corrimiento de los bits del primer operando hacia la izquierda (SHift Left), inyectando ceros por la derecha. Se desplazan tantos bits como se indique en el segundo operando. Ejemplo:

var
a: byte;
begin
a := $57; // 01010111
a := a shl 1; // 10101110
a := a shl 2; // 10111000
.....

SHR es como SHL, pero el corrimiento ocurre hacia la derecha, inyectándose ceros por la izquierda.

Espero haberme explicado.

Ernesto De Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:shl y shr

Publicado por Int3 (2 intervenciones) el 06/06/2003 18:44:15
gracias, creo que entendi
yo pensaba que hacia esto
10101110
01011101
10111010
01110101

pero entonces en este caso a la derecha siempre sera llenados con seros.
entonces algun byte shl 8 siempre sera 00000000 ?
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:shl y shr

Publicado por Ernesto De Spirito (706 intervenciones) el 06/06/2003 19:39:19
Es correcto. SHL y SHR desplazan los bits, pero inyectando ceros. No hacen rotación. Efectivamente, el resultado de desplazar los bits de un byte 8 lugares, ya sea a izquierda o a derecha, será 0.

Si quieres rotar a izquierda n bits:

a := (a shl n) or (a shr (8-n));

Si fuera un solo bit, quedaría:

a := (a shl 1) or (a shr 7);

Si quieres rotar a derecha n bits:

a := (a shr n) or (a shl (8-n));

Si fuera un solo bit, quedaría:

a := (a shr 1) or (a shl 7);

Espero que te sirva.

Ernesto De Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar