Manipulacion de bits

Solo disponible en BuenasTareas
  • Páginas : 15 (3515 palabras )
  • Descarga(s) : 0
  • Publicado : 24 de octubre de 2010
Leer documento completo
Vista previa del texto
Tópicos Selectos de Programación
Manipulación de bits (bitwise)

Formato de números enteros

Almacenamiento:
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, porejemplo 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.

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 enel 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) oal 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 creadoun 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).

Sistemas numéricos:
Los sistemas numéricos mas utilizados en computación son:

Binario que es tipo base de almacenamiento de cualquier tipo de dato, programa ejecutable. Los valores que están comprendidos son el 0 y el 1. Para el caso de los enteros que es lo que nos interesa en este tema, la conversión de decimal a binario se hacesiguiendo en método natural que es basado en una sucesión de divisiones y para su almacenamiento interno se considera todo el tamaño de la palabra (o registro) de acuerdo al tipo de entero que se trate, la cantidad de bits que harían falta para completar dicha cantidad se llenaría de la siguiente manera:

Si el número es positivo se agrega la cantidad de ceros necesarios para completar la palabrapor la izquierda, por ejemplo: el número 15 en binario es 1111, si es un valor de tipo:
byte, se completaria: 00001111
short, se completaria: 00000000 00001111
int, se completaria: 00000000 00000000 00000000 00001111
long, se completaria: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00001111

Otros ejemplos:
|Decimal |Binario|Tipo |
|2 |00000010 |byte |
|63 |00000000 00111111 |short...
tracking img