BITS, ESTRUCTURA DE DATOS.pptx

18
BITS, ESTRUCTURA DE DATOS • En computación es posible medir las cantidades de la información. La unidad básica de información es el bit, cuyos valores establecen uno de dos posibilidades mutuamente excluyentes. • Los dígitos binarios 0 y 1 se usan para representar los dos estados posibles de un bit particular. Dados n bits, se usa una cadena de unos y ceros para representar sus especificaciones.

Transcript of BITS, ESTRUCTURA DE DATOS.pptx

Page 1: BITS, ESTRUCTURA DE DATOS.pptx

BITS, ESTRUCTURA DE DATOS

• En computación es posible medir las cantidades de la información. La unidad básica de información es el bit, cuyos valores establecen uno de dos posibilidades mutuamente excluyentes.

• Los dígitos binarios 0 y 1 se usan para representar los dos estados posibles de un bit particular. Dados n bits, se usa una cadena de unos y ceros para representar sus especificaciones.

Page 2: BITS, ESTRUCTURA DE DATOS.pptx

BITS• El método mas difundido para interpretar especificaciones de bits

como enteros no negativos es el sistema numérico binario. En este sistema la posición del bit en el extremo derecho representa 20, lo cual es 1, la siguiente 21, lo cual es 2 y así sucesivamente. Si aparece un 1 en esa posición de bit particular, se incluye en la suma de potencia de 2 representada por la posición de tal posición de bit. Pero si aparece un 0 no se incluye en la suma.

• Hay dos métodos que se usan con frecuencia para representar números binarios negativos. En el primero denominado notación de complemento a uno, se representa un numero negativo cambiando cada bit en su valor absoluto a las especificaciones de bit opuesta.

Page 3: BITS, ESTRUCTURA DE DATOS.pptx

BITSEjemplo:

00100110 representa 3811011001 representa -38

Una cadena de bits que empieza con un 0 representa un numero positivo, en tanto una cadena de bits que inicia con 1 representa un numero negativo.

El segundo método se denomina notación de complemento a dos. Aquí se agrega un 1 a la representación del complemento a uno de un numero negativo.

Ejemplo:Considere el 0 utilizando 8 bits: 00000000. En complemento a uno es: 11111111, lo

cual es un 0 negativo en tal notación. Agregamos un 1 para realizar el complemento a dos 100000000, lo cual tiene 9 bits de longitud. Como solo se permitan 8 bits, se

descarta el bit de la extrema izquierda, dejando 00000000 como menos 0.

Page 4: BITS, ESTRUCTURA DE DATOS.pptx

Este operador unitario invierte cada bit del operando; 0 es convertido en 1 y viceversa.

Sintaxis• ~cast-expresion Ejemplo• signed int s1 = ~2; // equivale a:• signed int s1 = compl 2;

signed int s2 = ~s1 + 2;

Page 5: BITS, ESTRUCTURA DE DATOS.pptx

Operador a nivel de bits

• Una operación bit a bit o bitwise opera sobre numeros 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.

Page 6: BITS, ESTRUCTURA DE DATOS.pptx

Tipos de operaciones

• Operaciones bit a bit: Ejecutan las operaciones lógicas AND, OR, XOR, NOT, etc, sobre los bits individuales de los operandos.

• Operaciones de Desplazamiento: Desplazan los bits de los operandos hacia la derecha o hacia la izquierda una o más posiciones.

• 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.

Page 7: BITS, ESTRUCTURA DE DATOS.pptx

Determinando el estado de bits

• El AND puede ser usado para determinar si un bit particular está encendido (1) o apagado (0). Por ejemplo, dado un patrón de bits 0011, para determinar si el segundo bit está encendido se usa una operación AND con una máscara que contiene encendido solo el segundo bit, que es el que se quiere determinar:

• 0011 AND 0010 (máscara) = 0010

• Puesto que el resultado 0010 es diferente de cero, se sabe que el segundo bit en el patrón original está encendido. Esto es a menudo llamado enmascaramiento del bit (bit masking). (Por analogía, al uso de las cintas de enmascarar, que cubren o enmascaran porciones que no deben ser alteradas o porciones que no son de interés. En este caso, los valores 0 enmascaran los bits que no son de interés).

Page 8: BITS, ESTRUCTURA DE DATOS.pptx

Extrayendo bits

• El AND se puede usar para extraer determinados bits de un valor. Si en un byte, por ejemplo, tenemos representados dos dígitos hexadecimales empaquetados, uno en los 4 bits superiores y el otro en los 4 bits inferiores.

Page 9: BITS, ESTRUCTURA DE DATOS.pptx

Manipulación de bits (bitwise)

Formato de números enterosAlmacenamiento:

Endiannes: Describe como es almacenado un entero en la memoria sobre todo cuando ocupan más de un byte para su almacenamiento, y puede dividirse en dos tipos: big-endian y little-

endian.

big-endian: Primero se almacena el byte mas significativo (caso Java, protocolo IP, motorota, PowerPC)

little-endian: Primero se almacena el byte menos significativo (caso Pentium Intel)

Estas palabras se usan para referirse a las dos formas en que se pueden guardar los números que ocupan más de un byte.

Por ejemplo el número 5. Si se expresa en binario con 4 bits, su equivalencia es 0101. Si se hace con 8 bits, sería 00000101. Pero si se usa más de un byte para representarlo, por ejemplo

porque se tratara de un número "entero corto", usando la nomenclatura del lenguaje Java o C, se tiene que el número 5 equivaldría a 16 dígitos binarios: 00000000 00000101.

Page 10: BITS, ESTRUCTURA DE DATOS.pptx

Manipulación de bits (bitwise)•

Por tanto, ahora este número 5 queda representado como 2 bytes. El de la izquierda es el byte más significativo (MSB) y el de la derecha es el bit menos significativo (LSB). Estos nombres vienen de que un cambio en el byte de la derecha hace que el número cambie poco (por ejemplo, 00000000 00000100 = 4 en decimal), mientras que un cambio en el byte de la izquierda provoca cambios mucho más grandes (00000001 00000101 = 261 en decimal).

•De acuerdo a la arquitectura de una computadora, puede ocurrir que esos dos bytes se guarden en el orden que hemos visto: 00000000 00000101 (primero el MSB y luego el LSB) o al contrario (00000101 00000000).

• • El primer formato (MSB LSB) es lo que se conoce como Big Endian, porque eso de que el extremo

más grande aparece en primer lugar. El segundo formato (LSB MSB) es lo que se conoce como Little Endian, porque se almacena primero el dato más pequeño.

•Esto es importante dentro de la programación, ya que muchas veces deberemos saber con qué plataforma se ha creado un archivo de datos, o en que plataforma estamos trabajando, para poderlo interpretar correctamente.

• • En general, en caso de que un archivo contenga datos numéricos de más de un byte, deberíamos

saber si están almacenados en formato Little Endian o Big Endian, e intercambiar el orden de los bytes después de leer, si fuera necesario, de la misma manera debemos tener en cuenta esta información, si se van a enviar datos numéricos por la red (Internet).

Page 11: BITS, ESTRUCTURA DE DATOS.pptx

CONT…

• Se ha visto como los apuntadores nos dan control sobre las operaciones de bajo nivel de la memoria.

• Muchos programas (por ejemplo, aplicaciones del tipo sistemas) operan actualmente a bajo nivel donde bits individuales deben ser manipulados.

• La combinación de apuntadores y operadores a nivel bit hacen de C útil para muchas aplicaciones de bajo nivel y pueden casi reemplazar al código ensamblador. (Solamente un 10% aproximadamente de UNIX esta en código ensamblador el resto es C.)

Page 12: BITS, ESTRUCTURA DE DATOS.pptx

Campos de bit

• Al contrario de la mayoría de los lenguajes de programación, C tiene un método predefinido para acceder a un único bit en un byte. Este método puede ser utilísimo por una serie de razones:

• -Si el almacenamiento es limitado, se pueden almacenar varias variables booleanasen un byte;-ciertas interfaces de dispositivo transmiten información que se codifica en bits dentro de un byte;-ciertas rutinas de encriptación necesitan acceder a los bits en un byte.El método que C usa para acceder a los bits se basa en la estructura. Un campo de bit es un tipo especial de estructura que define la longitud en bits que tendrá cada elemento. El formato general de una definición de campo de bit es:

Page 13: BITS, ESTRUCTURA DE DATOS.pptx

Campos de bit• struct nomb_estruct {tipo nombre_1 : longitud;

tipo nombre_2 : longitud; tipo nombre_n : longitud; }

• Se debe declarar un campo de bit como int, unsigned o signed. Se debe declarar los campos de bits de longitud 1 como unsigned, ya que un bit único no puede tener signo.

• Por ejemplo, considerar esta definición de estructura:• struct empaquetado { unsigned int b1:1; unsigned int b2:1;

unsigned int b3:1; unsigned int b4:1; unsigned int tipo:4; unsigned int ent_raro:9; } paquete;

Page 14: BITS, ESTRUCTURA DE DATOS.pptx

CORRIMIENTO DE BITS• Las instrucciones de corrimiento, que son parte de la

capacidad lógica de la computadora, pueden realizar las siguientes acciones:

• • 1. Hacer referencia a un registro o dirección de memoria. • 2. Recorre bits a la izquierda o a la derecha. • 3. Recorre hasta 8 bits en un byte, 16 bits en una palabra

y 32 bits en una palabra doble. • 4. Corrimiento lógico (sin signo) o aritmético (con signo).

Page 15: BITS, ESTRUCTURA DE DATOS.pptx

CORRIMIENTO DE BITS

• El segundo operando contiene el valor del corrimiento, que es una constante (un valor inmediato) o una referencia al registro CL. Para los procesadores 8088/8086, la constante inmediata solo puede ser 1; un valor de corrimiento mayor que 1 debe estar contenido en el registro CL. Procesadores posteriores permiten constantes de corrimiento inmediato hasta 31.

Page 16: BITS, ESTRUCTURA DE DATOS.pptx
Page 17: BITS, ESTRUCTURA DE DATOS.pptx
Page 18: BITS, ESTRUCTURA DE DATOS.pptx