LENGUAJES DE PROGRAMACIÓN  
 
 
FreePascal

PASCAL CON FREE PASCAL

 
 

 

3.6. Operadores para dígitos binarios (bits - dígitos binarios).

 

anterior :: indice :: siguiente

 

Todos los tipos de datos enteros, que se usen en un programa, siempre estarán representados por dígitos binarios, estos operadores para dígitos binarios nos permiten trabajar con la representación binaria de los tipos de datos enteros. Los operadores son los mismos que los operadores lógicos ya conocidos, y dos adicionales, shl y shr; que se encargan de desplazar los dígitos binarios, a la izquierda o derecha, la cantidad indicada.

Los operadores shl y shr, desplazan los dígitos binarios del siguiente modo: shl desplaza los dígitos binarios a la izquierda, rellenando con ceros por la derecha, y shr desplaza los dígitos binarios a la derecha, rellenando con ceros por la izquierda.

Los dígitos binarios que se desplazan, a la izquierda con shl, se pierde siempre y cuando se desplacen más allá del tamaño, del tipo de dato entero que se esté usando; lo mismo sucede con shr, pero en sentido contrario.

El resultado de los distintos operadores para dígitos binarios se resume a continuación:

 

Operador Nombre Ejemplo
a y b son de tipo byte. a:=%00010100 b:=%00000110
Resultado
not Negación. c:=not a; Da como resultado : %11101011 que seria 235.
and Producto binario. c:=a and b; Da como resultado : %00000100 que seria el 4.
or Adición binaria. c:=a or b; Da como resultado : %00010110 que seria el 22.
xor Adición exclusiva binaria. c:=a xor b; Da como resultado : %00010010 que seria el 18.
shl Desplazamiento a la izquierda. c:= a shl 2; Da como resultado : %01010000 que seria el 80.
shr Desplazamiento a la derecha. c:=a shr 2; Da como resultado : %00000101 que seria el 5.

 

El programa siguiente muestra el uso de estos operadores:

 

 
{$codepage UTF8}

VAR
  a,b,c:byte;

BEGIN
  a:=%00010100; //20 en decimal
  b:=%00000110; //6 en decimal
  Writeln('a= ',a);
  Writeln('b= ',b);
  c:=not a;
  Writeln('not a = ',c);
  c:= a and b;
  Writeln('a and b = ',c);
  c:= a or b;
  Writeln('a or b = ',c); 
  c:= a xor b;
  Writeln('a xor b = ',c);
  c:= a shl 2;
  Writeln('a shl 2 = ',c);
  c:= a shr 2;
  Writeln('a shr 2 = ',c); 
  readln;
END.
 

Código fuente 10: Ejemplo del uso de los operadores binarios.

 

Una observación importante del operador shl es que al desplazar 1 bit a la izquierda un número, este se multiplica por 21, y si se desplaza 2 bits a la izquierda se multiplicarlo por 22, si se desplaza 3 bits lo multiplica por 23, y así sucesivamente con las potencias de 2; y si queremos dividir un número por las potencias de 2 hacemos lo mismo pero usando el operador shr.

 

anterior :: indice :: siguiente

 

 
 

  SUGERENCIAS