Anda di halaman 1dari 18

BITS, ESTRUCTURA DE

DATOS
En computacin es posible medir las
cantidades de la informacin. La unidad
bsica de informacin es el bit, cuyos
valores establecen uno de dos
posibilidades mutuamente excluyentes.
Los dgitos 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.

BITS
El mtodo mas difundido para interpretar especificaciones
de bits como enteros no negativos es el sistema numrico
binario. En este sistema la posicin 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
posicin de bit particular, se incluye en la suma de
potencia de 2 representada por la posicin de tal posicin
de bit. Pero si aparece un 0 no se incluye en la suma.
Hay dos mtodos que se usan con frecuencia para
representar nmeros binarios negativos. En el primero
denominado notacin de complemento a uno, se
representa un numero negativo cambiando cada bit en su
valor absoluto a las especificaciones de bit opuesta.

BITS
Ejemplo:
00100110 representa 38
11011001 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 mtodo se denomina notacin de complemento a dos. Aqu se
agrega un 1 a la representacin 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 notacin. 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.

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;

Operador a nivel de bits


Unaoperacin bit a bitobitwiseopera sobre
numeros binariosa nivel de sus
bitsindividuales. Es una accin primitiva rpida,
soportada directamente por los procesadores.
En procesadores simples de bajo costo, las
operaciones de bit a bit, junto con los de adicin
y sustraccin, son tpicamente sustancialmente
ms rpidas que la multiplicacin y la divisin,
mientras que en los modernos procesadores de
alto rendimiento usualmente las operaciones se
realizan a la misma velocidad.

Tipos de operaciones
Operaciones bit a bit: Ejecutan las operaciones
lgicas 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 ms posiciones.
Operaciones de Rotacin: Rotan los bits del
operando hacia la derecha o hacia la izquierda
una o ms posiciones. Pueden usar o no el flag
del acarreo como un bit adicional en la
rotacin.

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 patrn de bits
0011, para determinar si el segundo bit est encendido se usa una
operacin AND con una mscara que contiene encendido solo el
segundo bit, que es el que se quiere determinar:
0011 AND 0010 (mscara) = 0010
Puesto que el resultado 0010 es diferente de cero, se sabe que el
segundo bit en el patrn original est encendido. Esto es a menudo
llamado enmascaramiento del bit (bit masking). (Por analoga, al
uso de las cintas de enmascarar, que cubren o enmascaran
porciones que no deben ser alteradas o porciones que no son de
inters. En este caso, los valores 0 enmascaran los bits que no son
de inters).

Extrayendo bits
El AND se puede usar para extraer
determinados bits de un valor. Si en
un byte, por ejemplo, tenemos
representados dos dgitos
hexadecimalesempaquetados, uno
en los 4 bits superiores y el otro en
los 4 bits inferiores.

Manipulacin de bits (bitwise)


Formato de nmeros enteros
Almacenamiento:
Endiannes: Describe como es almacenado un entero en la memoria sobre todo
cuando ocupan ms 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 nmeros que ocupan ms de un byte.
Por ejemplo el nmero 5. Si se expresa en binario con 4 bits, su equivalencia es
0101. Si se hace con 8 bits, sera 00000101. Pero si se usa ms de un byte para
representarlo, por ejemplo porque se tratara de un nmero "entero corto",
usando la nomenclatura del lenguaje Java o C, se tiene que el nmero 5
equivaldra a 16 dgitos binarios: 00000000 00000101.

Manipulacin de bits (bitwise)

Por tanto, ahora este nmero 5 queda representado como 2 bytes. El de la izquierda
es el byte ms 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 nmero
cambie poco (por ejemplo, 00000000 00000100 = 4 en decimal), mientras que un
cambio en el byte de la izquierda provoca cambios mucho ms 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 ms grande aparece en primer lugar. El segundo formato (LSB MSB) es lo
que se conoce como Little Endian, porque se almacena primero el dato ms pequeo.

Esto es importante dentro de la programacin, 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 numricos de ms de un byte,
deberamos saber si estn almacenados en formato Little Endian o Big Endian, e
intercambiar el orden de los bytes despus de leer, si fuera necesario, de la misma
manera debemos tener en cuenta esta informacin, si se van a enviar datos
numricos por la red (Internet).

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 combinacin de apuntadores y operadores a
nivel bit hacen de C til para muchas aplicaciones
de bajo nivel y pueden casi reemplazar al cdigo
ensamblador. (Solamente un 10%
aproximadamente de UNIX esta en cdigo
ensamblador el resto es C.)

Campos de bit
Al contrario de la mayora de los lenguajes de
programacin, C tiene un mtodo predefinido para acceder
a un nico bit en un byte. Este mtodo puede ser utilsimo
por una serie de razones:
-Si el almacenamiento es limitado, se pueden almacenar
varias variablesbooleanasen un byte;-ciertas interfaces de
dispositivo transmiten informacin que se codifica en bits
dentro de un byte;-ciertas rutinas de encriptacin necesitan
acceder a los bits en un byte.El mtodo 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
definicin de campo de bit es:

Campos de bit
structnomb_estruct {tipo nombre_1 : longitud;
tipo nombre_2 : longitud;
tipo nombre_n : longitud;
}
Se debe declarar un campo de bit
comoint,unsignedosigned. Se debe declarar los
campos de bits de longitud 1 comounsigned, ya que un
bit nico no puede tener signo.
Por ejemplo, considerar esta definicin 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;

CORRIMIENTO DE BITS
Las instrucciones de corrimiento, que son parte
de la capacidad lgica de la computadora,
pueden realizar las siguientes acciones:

1. Hacer referencia a un registro o direccin 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 lgico (sin signo) o aritmtico (con
signo).

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

Anda mungkin juga menyukai