Logo Studenta

Operadores de bits

¡Este material tiene más páginas!

Vista previa del material en texto

Informática I
Departamento de Ingeniería Electrónica
Operadores de 
bits
Operadores de bits
El lenguaje C provee un conjunto de operadores para trabajar con variables
enteras a nivel de bits (bitwise operators).
Estas operaciones permiten operar para realizar todas las operaciones que
hemos realizado con uniones y/o estructuras de bits.
Los operadores de bits que provee el lenguaje son:
Operador Significado
& AND bit a bit (bitwise)
| OR bit a bit
 NOT bit a bit
^ XOR bit a bit
>> Desplazamiento a derecha
<< Desplazamiento a izquierda
Operadores de bits: AND
La operación AND a nivel de bit se define como:
A B A AND B
0 0 0
0 1 0
1 0 0
1 1 1
Es decir, el resultado es 1 si y sólo si ambos operandos son 1.
Operadores de bits: Operador & (ampersand)
El operador & (ampersand) actúa sobre dos variables enteras para realizar la
operación AND bit a bit.
/* Ejemplo */
unsigned char A = 0x1A;
unsigned char B = 0xF3;
C = A & B;
0 0 0 1 1 0 1 0A
01234567
1 1 1 1 0 0 1 1B
C
Operadores de bits: Operador & (ampersand)
El operador & (ampersand) actúa sobre dos variables enteras para realizar la
operación AND bit a bit.
/* Ejemplo */
unsigned char A = 0x1A;
unsigned char B = 0xF3;
C = A & B;
0 0 0 1 1 0 1 0A
01234567
1 1 1 1 0 0 1 1B
0 0 0 1 0 0 1 0C
C=0x12
Operadores de bits: OR
La operación OR a nivel de bit se define como:
A B A OR B
0 0 0
0 1 1
1 0 1
1 1 1
Es decir, el resultado es 1 si al menos uno de los operandos es uno.
Operadores de bits: Operador | (pipe)
El operador | (pipe) actúa sobre dos variables enteras para realizar la operación
OR bit a bit.
/* Ejemplo */
unsigned char A = 0x27;
unsigned char B = 0xD4;
C = A | B;
0 0 1 0 0 1 1 1A
01234567
1 1 0 1 0 1 0 0B
C
Operadores de bits: Operador | (pipe)
El operador | (pipe) actúa sobre dos variables enteras para realizar la operación
OR bit a bit.
/* Ejemplo */
unsigned char A = 0x27;
unsigned char B = 0xD4;
C = A | B;
0 0 1 0 0 1 1 1A
01234567
1 1 0 1 0 1 0 0B
1 1 1 1 0 1 1 1C
C=0xF7
Operadores de bits: NOT
La operación NOT a nivel de bit se define como:
A NOT A
0 1
1 0
Es decir, el resultado el complemento del bit sobre el que se actúa.
Operadores de bits: Operador ~ (tilde)
El operador ~ (tilde) actúa sobre una variable entera para realizar la operación
NOT bit a bit.
/* Ejemplo */
unsigned char A = 0x59;
C = ~A;
0 1 0 1 1 0 0 1A
01234567
C
Operadores de bits: Operador ~ (tilde)
El operador ~ (tilde) actúa sobre una variable entera para realizar la operación
NOT bit a bit.
/* Ejemplo */
unsigned char A = 0x59;
C = ~A;
0 1 0 1 1 0 0 1A
01234567
1 0 1 0 0 1 1 0C
C=0xA6
Operadores de bits: XOR
La operación XOR a nivel de bit se define como:
A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0
Es decir, el resultado es 1 si sólo uno de los operandos es igual a 1.
Operadores de bits: Operador ^ (circumflex)
El operador ^ (circumflex) actúa sobre dos variables enteras para realizar la
operación XOR bit a bit.
/* Ejemplo */
unsigned char A = 0x12;
unsigned char B = 0xBF;
C = A ^ B;
0 0 0 1 0 0 1 0A
01234567
1 0 1 1 1 1 1 1B
C
Operadores de bits: Operador ^ (circumflex)
El operador ^ (circumflex) actúa sobre dos variables enteras para realizar la
operación XOR bit a bit.
/* Ejemplo */
unsigned char A = 0x12;
unsigned char B = 0xBF;
C = A ^ B;
0 0 0 1 0 0 1 0A
01234567
1 0 1 1 1 1 1 1B
1 0 1 0 1 1 0 1C
C=0xAD
Operadores de bits: Operadores >> y <<
Los operadores de desplazamiento (shift operators) >> y << desplazan los bits de
las variables enteras a izquierda o derecha.
/* Ejemplo */
unsigned char A = 0x12;
C = A >> 2;
0 0 0 1 0 0 1 0A
01234567
C
Operadores de bits: Operadores >> y <<
Los operadores de desplazamiento (shift operators) >> y << desplazan los bits de
las variables enteras a izquierda o derecha.
/* Ejemplo */
unsigned char A = 0x12;
C = A >> 2;
0 0 0 1 0 0 1 0A
01234567
0 0 0 0 0 1 0 0C
C=0x04
Operadores de bits: Operadores >> y <<
Los operadores de desplazamiento (shift operators) >> y << desplazan los bits de
las variables enteras a izquierda o derecha.
/* Ejemplo */
unsigned char A = 0x12;
C = A << 3;
0 0 0 1 0 0 1 0A
01234567
C
Operadores de bits: Operadores >> y <<
Los operadores de desplazamiento (shift operators) >> y << desplazan los bits de
las variables enteras a izquierda o derecha.
/* Ejemplo */
unsigned char A = 0x12;
C = A << 3;
0 0 0 1 0 0 1 0A
01234567
1 0 0 1 0 0 0 0C
C=0x90
Operadores de bits
¡Hagamos ejercicios!
unsigned char A = 0xB7;
unsigned int B = 0x3E17;
unsigned int C;
/* 1 */
A = A & 0x0F;
/* 2 */
C = ( B >> 8) & 0x3F
/* 3 */
C = ( B << 3) | ( A & 0x07)
/* 4 */
Guardar en C los 4 bits más
significativos de A
alineados al bit menos
significativo.
/* 5 */
Guardar en C de los bits 4
al 15 de B alineados al bit
menos significativo.
Extracción de campos de bits: Máscaras
Una máscara (mask) es un valor constante que en conjunto con una operación
matemática se utiliza para extraer un campo de bits.
/* Ejemplo */
/*Extraer los 4 bits más significativos*/
unsigned char A = 0xE7;
C = A & 0xF0;
1 1 1 0 0 1 1 1A
01234567
1 1 1 0 0 0 0 0C
1 1 1 1 0 0 0 0Máscara
C=0xE0
Extracción de campos de bits: Máscaras
Una máscara (mask) es un valor constante que en conjunto con una operación
matemática se utiliza para extraer un campo de bits.
/* Ejemplo */
/*Extraer los 4 bits más significativos*/
unsigned char A = 0xE7;
C = A & 0xF0;
1 1 1 0 0 1 1 1A
01234567
1 1 1 0 0 0 0 0C
1 1 1 1 0 0 0 0Máscara
C=0xE0
Extracción de campos de bits: Desplazamiento
Los campos extraídos se suelen alinear al bit menos significativo (bit 0) para
su uso posterior.
/* Ejemplo */
/*Extraer los 4 bits más significativos*/
unsigned char A = 0xE7;
C = A >> 4;
C = C & 0x0F;
1 1 1 0 0 1 1 1A
01234567
0 0 0 0 1 1 1 0C
C=0x0E
1 1 1 10 0 0 0Máscara
0 0 0 0 1 1 1 0C
Extracción de campos de bits: Ejercicio
Extraer los campos de bits: válido, número de lámpara y corriente utilizando
operadores de bits.
Corriente (10 bits)Lámpara (5 bits)Válido (1 bit)

Continuar navegando

Materiales relacionados

25 pag.
D-001-ARITMETICA

UBAM

User badge image

Contenidos Muy Locos

9 pag.
20 pag.
OPERADORES EN C

User badge image

vicky angel

21 pag.
Operadores de Bit

User badge image

medicenslam