SlideShare una empresa de Scribd logo
1 de 24
MANEJO DE BITS
INTRODUCCIÓN
 Una computadora sin software sólo tiene
capacidades para hacer operaciones aritméticas
simples (sumas, restas, multiplicación, etc.)
 El software se vale de estas simples operaciones
para crear interfaces como las que vemos en los
modernos sistemas operativos.
 Todos los lenguajes, desde los más altos como
“PHP”, hasta los más bajos como “Ensamblador”,
pasan por binario; cada vez que se mueve el ratón
se invocan procesamiento de datos binarios.
INTRODUCCIÓN
 Una de las razones por las que C y C++ se han
hecho tan populares es por que el lenguaje ofrece
muchos operadores de manipulación de bits a bajo
nivel.
 Los operadores de manipulación de bits (bitwise)
ejecutan operaciones lógicas sobre cada uno de
los bits de los operandos.
 Estas operaciones son comparables en eficiencia y
en velocidad a sus equivalentes en lenguaje
ensamblador.
INTRODUCCIÓN
 Cada operador de manipulación de bits realiza una
operación lógica, bit a bit, sobre datos internos.
 Los operadores de manipulación de bits se aplican
sólo a variables y constantes char, int y long, y no a
datos con punto flotante.
 Dado que los números binarios constan de 1’s y 0’s
(bits) estos 1 y 0 se manipulan para producir el
resultado deseado para cada uno de los
operadores.
OPERADORES QUE VEREMOS
 "&“
 "|“
 "^“
 "~“
 "<<"
 ">>"
& OPERADOR AND
 & operador AND de bits (sólo aplicables a variables de
tipo entero)
 El operador & (no confundir con el operador lógico &&) es un
operador lógico a nivel de bits.
 Compara un par de cadenas de bits por bit; el resultado para
cada comparación es 1 si los bits comparados son ambos 1, y
0 en otro caso.
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
¿CUÁL ES EL RESULTADO DE APLICAR EL
OPERADOR AND?
1 1 0 1 0 1
0 1 1 0 0 1
OPERADOR &
 Con este operador & se puede ocultar un conjunto
de bits que no son relevantes en determinada
situación.
 Esto constituye una máscara de bits.
 Consideremos un pequeño problema y elaborar
una solución:
OPERADOR &
 En un ciclo controlado por la variable TAMANO, es
necesario imprimir el valor del contador sólo desde
0 hasta 15, y comenzar después en 0, aún cuando
TAMANO se siga incrementando.
PROCEDIMIENTO DE EJEMPLO ANDvoid operadorAND(void){
/*+++++++++++++++++++++++++++++++++++++++*
*Este procedimiento recibe un par de numeros *
*e imprime el resultado de aplicarles el *
*operador binario & *
*+++++++++++++++++++++++++++++++++++++++*/
int x;
int y;
int res;
cout << "nEste programa hace uso del operador binario &n";
cout << "nIntroduzca un entero: ";
cin >> x;
cout << "nIntroduzca un segundo entero: ";
cin >> y;
res = x&y;
cout << x <<" " << y << " " << res;
}
USO PRÁCTICO
 Tablas de estatus o permisos – se tiene un campo
“permisos” en la base de datos que corresponde a
un campo tipo integer, donde el valor
1 = lectura
2 = escritura Cada valor corresponde
4 = ejecución a un bit encendido
8 = otro permiso
Si se lee 3 significa lectura y
escritura.
6 = escritura y ejecución
USO PRÁCTICO
 Si se requiere saber si un usuario posee permisos
de escritura, se aplica máscara AND con valor 2.
EJEMPLO DE USO PRÁCTICO
 Investiga el valor binario de 1, 2 y 4
 Recuerda que 1 significa lectura, 2 significa
escritura y 4 significa ejecución.
 Para saber qué permisos tiene un usuario, se
aplica el permiso que uno busca con un operador
AND y el permiso que tiene el usuario.
¿QUÉ PUEDE HACER CADA USUARIO?
 Permisos lectura 0 0 0 0 0 0 0 1
 Permisos escritura 0 0 0 0 0 0 1 0
 Permisos ejecución 0 0 0 0 0 1 0 0
 Permisos usuarioA 0 0 0 0 0 1 1 0
 Permisos usuarioB 0 0 0 0 0 0 1 1
 Permisos usuarioC 0 0 0 0 1 1 1 1
PROCEDIMIENTO DE EJEMPLO MÁSCARA/*+++++++++++++++++++++++++++++++++++++++++++++
* Este procedimiento imprime ciclicamente valores +
* de una variable por debajo de un limite, +
* por medio de una mascara de bits. +
* +++++++++++++++++++++++++++++++++++++++++++*/
#define TAMANO 200
#define LIMITE 15
//LIMITE funciona como una máscara que oculta los bits a la izquierda de
//último 1 a la izquierda.
…
void MASCARA (void){
int i = 0, mascara;
for (i = 0; i < TAMANO; i++)
{
mascara = i & LIMITE;
cout << mascara << "n";
}
}
07/09/2015
15
Mtl.LourdesCahuich
| OR INCLUSIVO (PALABRA CLAVE BITOR)
 Este operador binario tiene un funcionamiento parecido
a los anteriores (AND y XOR), salvo que en este caso el
resultado es 1 si alguno de ellos está a 1. En caso
contrario devuelve 0 (ver ejemplo).
 Ejemplo:
int x = 10, y = 20;
int z = x | y; // equivale a:
int z = x bitor y;
 Según el enunciado, el operador | aplicado entre los
valores 6 y 13 resultaría:
6 == 0000 0110
13 == 0000 1101
------------------
0000 1111 == 15
^ XOR OR EXCLUSIVO (PALABRA CLAVE
XOR)
 El funcionamiento de este operador binario es parecido
al AND lógico , salvo que en este caso el resultado es 1
si ambos bits son complementarios (uno es 0 y el otro
1). En caso contrario devuelve 0.
 Ejemplo:
int x = 10, y = 20;
int z = x ^ y; // equivale a: int z = x xor y;
Según el enunciado, el operador ^ aplicado entre los
valores 7 y -2 resultaría:
7 == 0000 0111
-2 == 1111 1110
------------------
1111 1001 == -7
~ COMPLEMENTO A UNO
(PALABRA CLAVE COMPL)
 Este operador unitario invierte cada bit del operando; 0
es convertido en 1 y viceversa.
 La representación binaria de los complementos a uno de
los decimales 0, 1 y 2 son los que se expresan (para
simplificar los representamos como un octeto):
0 == 0000 0000 ~ 0 == 1111 1111
1 == 0000 0001 ~ 1 == 1111 1110
2 == 0000 0010 ~ 2 == 1111 1101
PROCEDIMIENTO DE EJEMPLO
void complementoAuno(void){
/*+++++++++++++++++++++++++++++++++++++++++++++
* Este procedimiento cambia un numero sin sigo a +
* su complemento a uno a nivel de bits +
* ++++++++++++++++++++++++++++++++++++++++++*/
short signed cero = 0, uno = 1, dos = 2;
cout << "~0 == " << ~cero << endl;
cout << "~1 == " << ~uno << endl;
cout << "~2 == " << ~dos << endl;
}
<< DESPLAZAMIENTO A IZQUIERDA
 Este operador binario realiza un desplazamiento de
bits a la izquierda. El bit más significativo (más a la
izquierda) se pierde, y se le asigna un 0 al menos
significativo (el de la derecha). El operando
derecho indica el número de desplazamientos que
se realizarán.
 Recuerde que los desplazamientos no son
rotaciones; los bits que salen por la izquierda se
pierden, los que entran por la derecha se rellenan
con ceros. Este tipo de desplazamientos se
denominan lógicos en contraposición a los cíclicos
o rotacionales.
<< DESPLAZAMIENTO A IZQUIERDA
unsigned long x = 10;
int y = 2;
unsigned long z = x << y;
 Según las premisas anteriores, los
desplazamientos izquierda de valor unitario
aplicados sobre los números 0, 1, 2 y -3, producen
los siguientes resultados:
0 == 0000 0000 0 << 1 == 0000 0000 == 0
1 == 0000 0001 1 << 1 == 0000 0010 == 2
2 == 0000 0010 2 << 1 == 0000 0100 == 4
-3 == 1111 1101 -3 << 1 == 1111 1010 == - 6
PROCEDIMIENTO DE EJEMPLO
void desplazamientoAIzquierda(void){
int x = 1;
// Los operadores de bits solo se aplican a variables
unsigned
cout << "nEl tamanio de una variable int es: " <<
sizeof(int) << endl;
cout << "nEl valor inicial de x: " << x << endl;
for (unsigned i = 1; i <= 8; i++)
{
unsigned desplazado = x << i;
cout << "nEl numero: " << desplazado << endl;
}
cout << "nEl valor final de x: " << x << endl;
}
>> DESPLAZAMIENTO A DERECHA
 Igual que el desplazamiento a la izquierda, pero el
desplazamiento de bits es, obviamente, a la
derecha.
 Sintaxis
expr-desplazada >> expr-desplazamiento
0 == 0000 0000 0 >> 1 == 0000 0000 == 0
2 == 0000 0010 2 >> 1 == 0000 0001 == 1
-2 == 1111 1110 -2 >> 1 == 1111 1111 == -1
(C++Builder & GNU-C++)
-16 == 1111 0000 -16 >> 2 == 1111 1100 == -4
(C++Builder & GNU-C++)
PROCEDIMIENTO DE EJEMPLO
void desplazamientoADerecha(void){
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* Este procedimiento hace uso de el operador de desplazamiento *
* hacia la derecha >> *
*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
int x = 128;
cout << "nEl tamanio de una variable int es: " << sizeof(int) << endl;
cout << "nEl valor inicial de x: " << x << endl;
for (unsigned i = 1; i <= 8; i++)
{
unsigned desplazado = x >> i;
cout << "nEl numero: " << desplazado << endl;
}
cout << "nEl valor final de x: " << x << endl;
}

Más contenido relacionado

La actualidad más candente

GRUPO 12 Ámbito: variables locales y globales
GRUPO 12  Ámbito: variables locales y globales GRUPO 12  Ámbito: variables locales y globales
GRUPO 12 Ámbito: variables locales y globales Rommel Lòpez
 
Ejemplo de Normalización
Ejemplo de Normalización Ejemplo de Normalización
Ejemplo de Normalización Martha
 
Métodos numéricos- Problemario
Métodos numéricos- ProblemarioMétodos numéricos- Problemario
Métodos numéricos- ProblemarioBren MA
 
Ecuacion de cauchy euler
Ecuacion de cauchy euler Ecuacion de cauchy euler
Ecuacion de cauchy euler seralb
 
Suma,resta y multiplicacion de numeros binarios
Suma,resta y multiplicacion de numeros binariosSuma,resta y multiplicacion de numeros binarios
Suma,resta y multiplicacion de numeros binariosLiz Ocampo
 
Jerarquia y Precedencia
Jerarquia y PrecedenciaJerarquia y Precedencia
Jerarquia y Precedenciajavieraantonio
 
Analisis_Algoritmo_Quicksort
Analisis_Algoritmo_QuicksortAnalisis_Algoritmo_Quicksort
Analisis_Algoritmo_QuicksortVelmuz Buzz
 
2.1 metodo de intervalo
2.1 metodo de intervalo2.1 metodo de intervalo
2.1 metodo de intervalomorenito9001
 
Operador anulador
Operador anuladorOperador anulador
Operador anuladorgermane123
 
Ejercicios Whule y Do While
Ejercicios Whule y Do WhileEjercicios Whule y Do While
Ejercicios Whule y Do WhileJoshe Varillas
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfijaOmarzingm
 
Metodo Tabular Integracion Por Partes
Metodo Tabular Integracion Por PartesMetodo Tabular Integracion Por Partes
Metodo Tabular Integracion Por PartesLISHAVELY
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Independencia Lineal y Wronskiano
Independencia Lineal y Wronskiano Independencia Lineal y Wronskiano
Independencia Lineal y Wronskiano Diego Salazar
 
Métodos de ordenación externa
Métodos de ordenación externaMétodos de ordenación externa
Métodos de ordenación externaEdwin Narváez
 

La actualidad más candente (20)

GRUPO 12 Ámbito: variables locales y globales
GRUPO 12  Ámbito: variables locales y globales GRUPO 12  Ámbito: variables locales y globales
GRUPO 12 Ámbito: variables locales y globales
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Ejemplo de Normalización
Ejemplo de Normalización Ejemplo de Normalización
Ejemplo de Normalización
 
Métodos numéricos- Problemario
Métodos numéricos- ProblemarioMétodos numéricos- Problemario
Métodos numéricos- Problemario
 
Ecuacion de cauchy euler
Ecuacion de cauchy euler Ecuacion de cauchy euler
Ecuacion de cauchy euler
 
Suma,resta y multiplicacion de numeros binarios
Suma,resta y multiplicacion de numeros binariosSuma,resta y multiplicacion de numeros binarios
Suma,resta y multiplicacion de numeros binarios
 
Jerarquia y Precedencia
Jerarquia y PrecedenciaJerarquia y Precedencia
Jerarquia y Precedencia
 
Analisis_Algoritmo_Quicksort
Analisis_Algoritmo_QuicksortAnalisis_Algoritmo_Quicksort
Analisis_Algoritmo_Quicksort
 
2.1 metodo de intervalo
2.1 metodo de intervalo2.1 metodo de intervalo
2.1 metodo de intervalo
 
Operador anulador
Operador anuladorOperador anulador
Operador anulador
 
Ejercicios Whule y Do While
Ejercicios Whule y Do WhileEjercicios Whule y Do While
Ejercicios Whule y Do While
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
Semana 6 Módulos Clases y Objetos
Semana 6   Módulos Clases y ObjetosSemana 6   Módulos Clases y Objetos
Semana 6 Módulos Clases y Objetos
 
Metodo Tabular Integracion Por Partes
Metodo Tabular Integracion Por PartesMetodo Tabular Integracion Por Partes
Metodo Tabular Integracion Por Partes
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Independencia Lineal y Wronskiano
Independencia Lineal y Wronskiano Independencia Lineal y Wronskiano
Independencia Lineal y Wronskiano
 
Ejercicios de arreglo
Ejercicios de arregloEjercicios de arreglo
Ejercicios de arreglo
 
Métodos de ordenación externa
Métodos de ordenación externaMétodos de ordenación externa
Métodos de ordenación externa
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
unidad 4 ecuaciones diferenciales
 unidad 4 ecuaciones diferenciales unidad 4 ecuaciones diferenciales
unidad 4 ecuaciones diferenciales
 

Destacado

Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3UVM
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlUVM
 
Breve repaso de apuntadores
Breve repaso de apuntadoresBreve repaso de apuntadores
Breve repaso de apuntadoresUVM
 
Algunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoAlgunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoUVM
 
Aclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreAclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreUVM
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++UVM
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadoresUVM
 
Resumen de funciones
Resumen de funcionesResumen de funciones
Resumen de funcionesUVM
 
Arreglos conceptos básicos
Arreglos conceptos básicosArreglos conceptos básicos
Arreglos conceptos básicosUVM
 
Depuración de un programa en c++
Depuración de un programa en c++Depuración de un programa en c++
Depuración de un programa en c++UVM
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuarioUVM
 
Función main()
Función main()Función main()
Función main()UVM
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datosUVM
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funcionesUVM
 

Destacado (14)

Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stl
 
Breve repaso de apuntadores
Breve repaso de apuntadoresBreve repaso de apuntadores
Breve repaso de apuntadores
 
Algunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoAlgunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agosto
 
Aclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreAclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembre
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadores
 
Resumen de funciones
Resumen de funcionesResumen de funciones
Resumen de funciones
 
Arreglos conceptos básicos
Arreglos conceptos básicosArreglos conceptos básicos
Arreglos conceptos básicos
 
Depuración de un programa en c++
Depuración de un programa en c++Depuración de un programa en c++
Depuración de un programa en c++
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuario
 
Función main()
Función main()Función main()
Función main()
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datos
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funciones
 

Similar a Manejo de bits

Manejo de bits -operadores de bits C++
Manejo de bits -operadores de bits C++Manejo de bits -operadores de bits C++
Manejo de bits -operadores de bits C++UVM
 
Semana 5-Conceptualziación del lenguaje de programación C++
Semana 5-Conceptualziación del lenguaje de programación C++Semana 5-Conceptualziación del lenguaje de programación C++
Semana 5-Conceptualziación del lenguaje de programación C++luzgaray6
 
Semana 1-Conceptualziación del lenguaje d eprogramación C++
Semana 1-Conceptualziación del lenguaje d eprogramación C++Semana 1-Conceptualziación del lenguaje d eprogramación C++
Semana 1-Conceptualziación del lenguaje d eprogramación C++luzgaray6
 
Semana 2-Conceptualización del lenguaje de programación C++
Semana 2-Conceptualización del lenguaje de programación C++Semana 2-Conceptualización del lenguaje de programación C++
Semana 2-Conceptualización del lenguaje de programación C++luzgaray6
 
Tipos de operadores_dulce_velazquez
Tipos de operadores_dulce_velazquezTipos de operadores_dulce_velazquez
Tipos de operadores_dulce_velazquezRosario Garcia Ruiz
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxfreddymadriz
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Digital
DigitalDigital
Digitaltoni
 
Digital E
Digital EDigital E
Digital Etoni
 

Similar a Manejo de bits (20)

Manejo de bits -operadores de bits C++
Manejo de bits -operadores de bits C++Manejo de bits -operadores de bits C++
Manejo de bits -operadores de bits C++
 
tipos de operadores
tipos de operadores tipos de operadores
tipos de operadores
 
Unidad aritmetico logica ALU
Unidad aritmetico logica ALUUnidad aritmetico logica ALU
Unidad aritmetico logica ALU
 
Semana 5-Conceptualziación del lenguaje de programación C++
Semana 5-Conceptualziación del lenguaje de programación C++Semana 5-Conceptualziación del lenguaje de programación C++
Semana 5-Conceptualziación del lenguaje de programación C++
 
Semana 1-Conceptualziación del lenguaje d eprogramación C++
Semana 1-Conceptualziación del lenguaje d eprogramación C++Semana 1-Conceptualziación del lenguaje d eprogramación C++
Semana 1-Conceptualziación del lenguaje d eprogramación C++
 
Semana 2-Conceptualización del lenguaje de programación C++
Semana 2-Conceptualización del lenguaje de programación C++Semana 2-Conceptualización del lenguaje de programación C++
Semana 2-Conceptualización del lenguaje de programación C++
 
Tipos de operadores_dulce_velazquez
Tipos de operadores_dulce_velazquezTipos de operadores_dulce_velazquez
Tipos de operadores_dulce_velazquez
 
Tipos de operadores_dulce
Tipos de operadores_dulceTipos de operadores_dulce
Tipos de operadores_dulce
 
Tipos de operadores_velazquez
Tipos de operadores_velazquezTipos de operadores_velazquez
Tipos de operadores_velazquez
 
Tipos de operadores
Tipos de operadoresTipos de operadores
Tipos de operadores
 
Operadores de c_..
Operadores de c_..Operadores de c_..
Operadores de c_..
 
Operadores de c++
Operadores de c++Operadores de c++
Operadores de c++
 
C sharp
C sharpC sharp
C sharp
 
Diapo04
Diapo04Diapo04
Diapo04
 
Proyecto1
Proyecto1Proyecto1
Proyecto1
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Digital
DigitalDigital
Digital
 
Digital E
Digital EDigital E
Digital E
 

Más de UVM

Tiempo compartido en programación
Tiempo compartido en programaciónTiempo compartido en programación
Tiempo compartido en programaciónUVM
 
Portafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaPortafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaUVM
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempoUVM
 
Administración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosAdministración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosUVM
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglosUVM
 
Objetos y arreglos en C#
Objetos y arreglos en C#Objetos y arreglos en C#
Objetos y arreglos en C#UVM
 
Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición UVM
 
Repaso previo a 2º examen parcial
Repaso previo a 2º examen parcialRepaso previo a 2º examen parcial
Repaso previo a 2º examen parcialUVM
 
Polimorfismo
PolimorfismoPolimorfismo
PolimorfismoUVM
 
Namespaces y C#
Namespaces y C#Namespaces y C#
Namespaces y C#UVM
 
Tipos de herencia
Tipos de herenciaTipos de herencia
Tipos de herenciaUVM
 
Herencia 1ª parte
Herencia 1ª parteHerencia 1ª parte
Herencia 1ª parteUVM
 
Agregando comportamiento al objeto – estructuras de repetición
Agregando comportamiento al objeto – estructuras de repeticiónAgregando comportamiento al objeto – estructuras de repetición
Agregando comportamiento al objeto – estructuras de repeticiónUVM
 
Agregando comportamiento al objeto – estructuras de decision
Agregando comportamiento al objeto – estructuras de decisionAgregando comportamiento al objeto – estructuras de decision
Agregando comportamiento al objeto – estructuras de decisionUVM
 
Presentación de proyectos semestrales 01-15
Presentación de proyectos semestrales 01-15Presentación de proyectos semestrales 01-15
Presentación de proyectos semestrales 01-15UVM
 
Creación de archivos de clases en c#
Creación de archivos de clases en c#Creación de archivos de clases en c#
Creación de archivos de clases en c#UVM
 

Más de UVM (16)

Tiempo compartido en programación
Tiempo compartido en programaciónTiempo compartido en programación
Tiempo compartido en programación
 
Portafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaPortafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación Avanzada
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempo
 
Administración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosAdministración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicos
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglos
 
Objetos y arreglos en C#
Objetos y arreglos en C#Objetos y arreglos en C#
Objetos y arreglos en C#
 
Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición
 
Repaso previo a 2º examen parcial
Repaso previo a 2º examen parcialRepaso previo a 2º examen parcial
Repaso previo a 2º examen parcial
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Namespaces y C#
Namespaces y C#Namespaces y C#
Namespaces y C#
 
Tipos de herencia
Tipos de herenciaTipos de herencia
Tipos de herencia
 
Herencia 1ª parte
Herencia 1ª parteHerencia 1ª parte
Herencia 1ª parte
 
Agregando comportamiento al objeto – estructuras de repetición
Agregando comportamiento al objeto – estructuras de repeticiónAgregando comportamiento al objeto – estructuras de repetición
Agregando comportamiento al objeto – estructuras de repetición
 
Agregando comportamiento al objeto – estructuras de decision
Agregando comportamiento al objeto – estructuras de decisionAgregando comportamiento al objeto – estructuras de decision
Agregando comportamiento al objeto – estructuras de decision
 
Presentación de proyectos semestrales 01-15
Presentación de proyectos semestrales 01-15Presentación de proyectos semestrales 01-15
Presentación de proyectos semestrales 01-15
 
Creación de archivos de clases en c#
Creación de archivos de clases en c#Creación de archivos de clases en c#
Creación de archivos de clases en c#
 

Último

Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdfMiNeyi1
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptxRigoTito
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 

Último (20)

Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 

Manejo de bits

  • 2. INTRODUCCIÓN  Una computadora sin software sólo tiene capacidades para hacer operaciones aritméticas simples (sumas, restas, multiplicación, etc.)  El software se vale de estas simples operaciones para crear interfaces como las que vemos en los modernos sistemas operativos.  Todos los lenguajes, desde los más altos como “PHP”, hasta los más bajos como “Ensamblador”, pasan por binario; cada vez que se mueve el ratón se invocan procesamiento de datos binarios.
  • 3. INTRODUCCIÓN  Una de las razones por las que C y C++ se han hecho tan populares es por que el lenguaje ofrece muchos operadores de manipulación de bits a bajo nivel.  Los operadores de manipulación de bits (bitwise) ejecutan operaciones lógicas sobre cada uno de los bits de los operandos.  Estas operaciones son comparables en eficiencia y en velocidad a sus equivalentes en lenguaje ensamblador.
  • 4. INTRODUCCIÓN  Cada operador de manipulación de bits realiza una operación lógica, bit a bit, sobre datos internos.  Los operadores de manipulación de bits se aplican sólo a variables y constantes char, int y long, y no a datos con punto flotante.  Dado que los números binarios constan de 1’s y 0’s (bits) estos 1 y 0 se manipulan para producir el resultado deseado para cada uno de los operadores.
  • 5. OPERADORES QUE VEREMOS  "&“  "|“  "^“  "~“  "<<"  ">>"
  • 6. & OPERADOR AND  & operador AND de bits (sólo aplicables a variables de tipo entero)  El operador & (no confundir con el operador lógico &&) es un operador lógico a nivel de bits.  Compara un par de cadenas de bits por bit; el resultado para cada comparación es 1 si los bits comparados son ambos 1, y 0 en otro caso. 0 & 0 = 0 0 & 1 = 0 1 & 0 = 0 1 & 1 = 1
  • 7. ¿CUÁL ES EL RESULTADO DE APLICAR EL OPERADOR AND? 1 1 0 1 0 1 0 1 1 0 0 1
  • 8. OPERADOR &  Con este operador & se puede ocultar un conjunto de bits que no son relevantes en determinada situación.  Esto constituye una máscara de bits.  Consideremos un pequeño problema y elaborar una solución:
  • 9. OPERADOR &  En un ciclo controlado por la variable TAMANO, es necesario imprimir el valor del contador sólo desde 0 hasta 15, y comenzar después en 0, aún cuando TAMANO se siga incrementando.
  • 10. PROCEDIMIENTO DE EJEMPLO ANDvoid operadorAND(void){ /*+++++++++++++++++++++++++++++++++++++++* *Este procedimiento recibe un par de numeros * *e imprime el resultado de aplicarles el * *operador binario & * *+++++++++++++++++++++++++++++++++++++++*/ int x; int y; int res; cout << "nEste programa hace uso del operador binario &n"; cout << "nIntroduzca un entero: "; cin >> x; cout << "nIntroduzca un segundo entero: "; cin >> y; res = x&y; cout << x <<" " << y << " " << res; }
  • 11. USO PRÁCTICO  Tablas de estatus o permisos – se tiene un campo “permisos” en la base de datos que corresponde a un campo tipo integer, donde el valor 1 = lectura 2 = escritura Cada valor corresponde 4 = ejecución a un bit encendido 8 = otro permiso Si se lee 3 significa lectura y escritura. 6 = escritura y ejecución
  • 12. USO PRÁCTICO  Si se requiere saber si un usuario posee permisos de escritura, se aplica máscara AND con valor 2.
  • 13. EJEMPLO DE USO PRÁCTICO  Investiga el valor binario de 1, 2 y 4  Recuerda que 1 significa lectura, 2 significa escritura y 4 significa ejecución.  Para saber qué permisos tiene un usuario, se aplica el permiso que uno busca con un operador AND y el permiso que tiene el usuario.
  • 14. ¿QUÉ PUEDE HACER CADA USUARIO?  Permisos lectura 0 0 0 0 0 0 0 1  Permisos escritura 0 0 0 0 0 0 1 0  Permisos ejecución 0 0 0 0 0 1 0 0  Permisos usuarioA 0 0 0 0 0 1 1 0  Permisos usuarioB 0 0 0 0 0 0 1 1  Permisos usuarioC 0 0 0 0 1 1 1 1
  • 15. PROCEDIMIENTO DE EJEMPLO MÁSCARA/*+++++++++++++++++++++++++++++++++++++++++++++ * Este procedimiento imprime ciclicamente valores + * de una variable por debajo de un limite, + * por medio de una mascara de bits. + * +++++++++++++++++++++++++++++++++++++++++++*/ #define TAMANO 200 #define LIMITE 15 //LIMITE funciona como una máscara que oculta los bits a la izquierda de //último 1 a la izquierda. … void MASCARA (void){ int i = 0, mascara; for (i = 0; i < TAMANO; i++) { mascara = i & LIMITE; cout << mascara << "n"; } } 07/09/2015 15 Mtl.LourdesCahuich
  • 16. | OR INCLUSIVO (PALABRA CLAVE BITOR)  Este operador binario tiene un funcionamiento parecido a los anteriores (AND y XOR), salvo que en este caso el resultado es 1 si alguno de ellos está a 1. En caso contrario devuelve 0 (ver ejemplo).  Ejemplo: int x = 10, y = 20; int z = x | y; // equivale a: int z = x bitor y;  Según el enunciado, el operador | aplicado entre los valores 6 y 13 resultaría: 6 == 0000 0110 13 == 0000 1101 ------------------ 0000 1111 == 15
  • 17. ^ XOR OR EXCLUSIVO (PALABRA CLAVE XOR)  El funcionamiento de este operador binario es parecido al AND lógico , salvo que en este caso el resultado es 1 si ambos bits son complementarios (uno es 0 y el otro 1). En caso contrario devuelve 0.  Ejemplo: int x = 10, y = 20; int z = x ^ y; // equivale a: int z = x xor y; Según el enunciado, el operador ^ aplicado entre los valores 7 y -2 resultaría: 7 == 0000 0111 -2 == 1111 1110 ------------------ 1111 1001 == -7
  • 18. ~ COMPLEMENTO A UNO (PALABRA CLAVE COMPL)  Este operador unitario invierte cada bit del operando; 0 es convertido en 1 y viceversa.  La representación binaria de los complementos a uno de los decimales 0, 1 y 2 son los que se expresan (para simplificar los representamos como un octeto): 0 == 0000 0000 ~ 0 == 1111 1111 1 == 0000 0001 ~ 1 == 1111 1110 2 == 0000 0010 ~ 2 == 1111 1101
  • 19. PROCEDIMIENTO DE EJEMPLO void complementoAuno(void){ /*+++++++++++++++++++++++++++++++++++++++++++++ * Este procedimiento cambia un numero sin sigo a + * su complemento a uno a nivel de bits + * ++++++++++++++++++++++++++++++++++++++++++*/ short signed cero = 0, uno = 1, dos = 2; cout << "~0 == " << ~cero << endl; cout << "~1 == " << ~uno << endl; cout << "~2 == " << ~dos << endl; }
  • 20. << DESPLAZAMIENTO A IZQUIERDA  Este operador binario realiza un desplazamiento de bits a la izquierda. El bit más significativo (más a la izquierda) se pierde, y se le asigna un 0 al menos significativo (el de la derecha). El operando derecho indica el número de desplazamientos que se realizarán.  Recuerde que los desplazamientos no son rotaciones; los bits que salen por la izquierda se pierden, los que entran por la derecha se rellenan con ceros. Este tipo de desplazamientos se denominan lógicos en contraposición a los cíclicos o rotacionales.
  • 21. << DESPLAZAMIENTO A IZQUIERDA unsigned long x = 10; int y = 2; unsigned long z = x << y;  Según las premisas anteriores, los desplazamientos izquierda de valor unitario aplicados sobre los números 0, 1, 2 y -3, producen los siguientes resultados: 0 == 0000 0000 0 << 1 == 0000 0000 == 0 1 == 0000 0001 1 << 1 == 0000 0010 == 2 2 == 0000 0010 2 << 1 == 0000 0100 == 4 -3 == 1111 1101 -3 << 1 == 1111 1010 == - 6
  • 22. PROCEDIMIENTO DE EJEMPLO void desplazamientoAIzquierda(void){ int x = 1; // Los operadores de bits solo se aplican a variables unsigned cout << "nEl tamanio de una variable int es: " << sizeof(int) << endl; cout << "nEl valor inicial de x: " << x << endl; for (unsigned i = 1; i <= 8; i++) { unsigned desplazado = x << i; cout << "nEl numero: " << desplazado << endl; } cout << "nEl valor final de x: " << x << endl; }
  • 23. >> DESPLAZAMIENTO A DERECHA  Igual que el desplazamiento a la izquierda, pero el desplazamiento de bits es, obviamente, a la derecha.  Sintaxis expr-desplazada >> expr-desplazamiento 0 == 0000 0000 0 >> 1 == 0000 0000 == 0 2 == 0000 0010 2 >> 1 == 0000 0001 == 1 -2 == 1111 1110 -2 >> 1 == 1111 1111 == -1 (C++Builder & GNU-C++) -16 == 1111 0000 -16 >> 2 == 1111 1100 == -4 (C++Builder & GNU-C++)
  • 24. PROCEDIMIENTO DE EJEMPLO void desplazamientoADerecha(void){ /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * Este procedimiento hace uso de el operador de desplazamiento * * hacia la derecha >> * *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ int x = 128; cout << "nEl tamanio de una variable int es: " << sizeof(int) << endl; cout << "nEl valor inicial de x: " << x << endl; for (unsigned i = 1; i <= 8; i++) { unsigned desplazado = x >> i; cout << "nEl numero: " << desplazado << endl; } cout << "nEl valor final de x: " << x << endl; }

Notas del editor

  1. El resultado es 0 1 0 0 0 1