EstDatos Semana 2

Páginas: 7 (1728 palabras) Publicado: 12 de abril de 2015
ESTRUCTURA DE DATOS

Manipulación de Bits

César Liza Avila
cla@upnorte.edu.pe
creadores@hotmail.com

MANIPULACIÓN DE BITS

Sabemos que la mínima cantidad de información que
podemos acceder directamente es un byte y que cada
byte consta de 8 bits.
7

6

5

4

3

2

1

0

Byte
bit

Bit significa binary digit, es decir que puede almacenar
dos posibles valores: 0 ó 1, o si prefiere verdadero ofalso.
Físicamente esto se logra llevando un voltaje en cada
celda.

OPERADORES SOBRE BITS



Una vez accedido al byte, podemos manipular cualquiera de sus bits.
El C/C++/C#, permite fácilmente el manejo de bits.
Operador Lógico Descripción

op1

op

~ op

~

Negación

0

1

&

Conjunción

1

0

|

Disyunción

^

Exclusión

op2 op1 & op2 op1 | op2 op1 ^ op2

0

0

0

0

0

0

1

0

1

1

1

0

01

1

1

1

1

1

0

Los operandos deben ser de algún tipo
entero (char, short, int, long y sus
combinaciones con signed y unsigned)
Los operadores a nivel de bits trabajan
sobre cada uno de los bits de la
variable.
Por ejemplo: Si a y b son de algún tipo
entero, entonces se pueden usar así:
w = ~a;
x = a & b;
y = a | b;
z = a ^ b;

Escriba un programa que lea dos valores y muestre el
resultado deaplicarle los operadores lógicos a nivel de
bits: Negación, AND, OR y XOR.

# include
void main(void)
{
short int a, b;
cout << "a="; cin>>a;
cout << "b="; cin>>b;
cout << "~a = " << ~a << endl;
cout << "~b = " << ~b << endl;
cout << "a&b= " << (a&b) << endl;
cout << "a | b= " << (a | b) << endl;
cout << "a^ b= " << (a^ b) << endl;
}

USOS DEL AND
Podemos utilizar el AND a nivel debits para determinar si
algún bit particular o un conjunto de bits están en 1.
Por ejemplo la siguiente tabla muestra el significado de cada
bit del byte de estado del puerto de comunicaciones
7 6 5 4 3 2 1 0 Significado
1 Datos preparados
1
1
1
1
1
1
1

Error de desbordamiento
Error de paridad
Error de formulación

Si quisiéramos saber si hubo un
error de paridad, haríamos un
AND del byte deestado con la
máscara 00000100 (que
equivale a 4 en decimal), si el
resultado es mayor que cero
entonces el bit 2 estará en 1.

Interrupción detectada

mask = 4;
If ( (byteEstado & mask ) > 0)
cout<<“Error de paridad”;

THR vacío

Normalmente se acostumbra a inicializar los valores de la
máscara en hexadecimal.

TSR vacío
Tiempo de espera

NÚMEROS HEXADECIMALES
En programación de bajo nivel (cercanaa la máquina) se acostumbra a utilizar
la base 16, en lugar de la base 2, ya que presenta un equivalente directo con la
base 2, pero al contrario de ésta útlima, es mucho más fácil de manejar.
En base hexadecimal cada 4 dígitos binarios equivalen a un dígito hexadecimal.
Por ejemplo:
El número en base 2: 0001 1111 equivale a 1F en hexadecimal.
El número en base 16: A2 equivale a 1010 0010 enbinario.
En C/C++/C# los números hexadecimales van precedidos de 0x, así 1F se
escribirá 0x1F, mientras que A2 se escribirá 0xA2.
Note que:
Un byte
usará 2 dígitos hexadecimales
Dos bytes usará 4 dígitos hexadecimales
Cuatro bytes usará 8 dígitos hexadecimales
Así el entero 1 (de tipo int osea 4 bytes ) será en hexadecimal 0x00000001

PROPIEDAD DE XOR
El XOR tiene la propiedad de que al ser aplicadodos veces se obtiene el
valor original. Por ejemplo:
Bits originales 01010101 XOR
Clave
00001111
-------------Resultado
01011010
Aplicando nuevamente XOR
Resultado
Clave

01011010 XOR
00001111
-------------Bits originales 01010101

Escriba un programa que encripte una palabra usando el método de
manipulación de bits XOR, con clave de un carácter.

# include
# include
voidencripta(int, char [ ], char);
void desencripta(int, char [ ], char);
void main(void)
{
char x[30], a;
int n;
cout<<"ingrese palabra: ";
cin>>x;
n= strlen(x);
cout<<"ingrese clave: ";
cin>>a;
encripta(n, x, a);
cout<<"Encriptado: "< desencripta(n, x, a);
cout<<"Desecriptado: "< }

void encripta ( int n, char x[ ],
char clave )
{
for ( int i=0; i x[i]= x[i]^clave;
}
void...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Taller Semana Semana 2
  • semana 2
  • Semana 2
  • Semana 2
  • 2 Semana
  • Semana 2
  • semana 2
  • semana 2

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS