viernes, 12 de octubre de 2012

TEMA 4: UNIONES, MANIPULADORES DE BITS Y ENUMERACIONES


UNIONS, MANIPULADORES DE BITS Y ENUMERACIONES

4.1 uniones
Las uniones desarmables son aquellas que reúnen varias piezas de manera solidaria y forman con ellas una misma pieza; pero que permiten, en todomomento, la separación de las piezas unidas, mediante una maniobra fácil que no deteriora los
elementos.
Este
 sistema es el más frecuentemente empleado, y uno de los medios de unión desarmable más utilizada es el empleo de tornillos y tuercas.
En una bicicleta, por ejemplo, se unen con tornillos las piezas del mecanismo de rueda libre, eles y horquilla, manivelas y pedales y llantas. En el montaje de una motocicleta o automóvil intervienen, ordinariamente, cientos de tornillos, tuercas y arandelas, pernos roscados, etc. Todas estas piezas, cuando ello es necesario, (en las reparaciones) se pueden desmontar y volverlas a montar.
Las uniones C++ son un tipo especial de clase; un tipo de variable con cierta similitud con las estructuras Pueden albergar diferentes tipos de datos, pero solo uno, de entre todos los posibles, al mismo tiempo. Se dice que solo uno puede estar "activo" en cada momento, y se corresponden con los registros de tipo variable de Pascal y Modula-2. Como el lector estará suponiendo, el tamaño de una unión es el del mayor elemento que puede albergar. El valor exacto depende de la implementación y de las alineaciones internas
Como se verá a continuación, desde el punto de vista de su organización interna son como estructuras en las que todos sus miembros tuviesen el mismo desplazamiento respecto al origen. Desde un punto de vista funcional pueden ser considerados almacenamientos u objetos multi-uso.
En realidad las uniones son un recurso de programación que permite alojar distintos tipos de objetos en un mismo espacio cuando estos objetos no coexisten en el tiempo y no hay suficiente memoria disponible para asignarles espacios distintos. Se trata por tanto de objetos muy especializados en cuanto a su uso, propio de aplicaciones muy "afinadas", de tiempos en que la memoria era un bien escaso, pero cuya utilización real es bastante rara y desaconsejada

4.2 OPERADORES A NIVEL DE BITS
Una operación bit a bit o bitwise opera sobre números binarios a nivel de sus bits individuales. Es una acción primitiva rápida, soportada directamente por los procesadores. En procesadores simples de bajo costo, las operaciones de bit a bit, junto con los de adición y sustracción, son típicamente sustancialmente más rápidas que la multiplicación y la división, mientras que en los modernos procesadores de alto rendimiento usualmente las operaciones se realizan a la misma velocidad.
Ø  Tipos
1.     Operaciones bit a bit: Ejecutan las operaciones lógicas AND, OR, XOR, NOT, etc, sobre los bits individuales de los operandos.
2.     Operaciones de Desplazamiento: Desplazan los bits de los operandos hacia la derecha o hacia la izquierda una o más posiciones.
3.     Operaciones de Rotación: Rotan los bits del operando hacia la derecha o hacia la izquierda una o más posiciones. Pueden usar o no el flag del acarreo como un bit adicional en la rotación.

En primer lugar veamos la necesidad de trabajar a nivel bit, y creo que la mejor forma es dando un ejemplo practico. Supongamos que obtuvimos un código de Huffman sobre unos caracteres y nos dio la siguiente codificación:

Entonces, por ejemplo la siguiente cadena “aacbc”, la codifico y produce la
Secuencia 1100101001.Ahora bien, si uno representara cada bit como un char o un integre estaríamos expandiendo siempre el archivo original y esto no es lo que queremos. Entonces introduciremos y refrescaremos conceptos de lógica binaria y exactamente para que sirve cada operador, para luego ver implementaciones de algoritmos en Java.

No hay comentarios:

Publicar un comentario