SlideShare una empresa de Scribd logo
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

Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)
Rommel Lòpez
 
Introducción a Turbo Pascal
Introducción a Turbo PascalIntroducción a Turbo Pascal
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
Sara Martínez Gómez
 
Caracteres y Cadenas en C
Caracteres y Cadenas en CCaracteres y Cadenas en C
Caracteres y Cadenas en C
Ronny Parra
 
Div, idiv, Neg ensamblador
Div, idiv, Neg ensambladorDiv, idiv, Neg ensamblador
Div, idiv, Neg ensamblador
David Flores Gallegos
 
INSTRUCCIONES REPETITIVAS EN ASSEMBLER
INSTRUCCIONES REPETITIVAS EN ASSEMBLERINSTRUCCIONES REPETITIVAS EN ASSEMBLER
INSTRUCCIONES REPETITIVAS EN ASSEMBLER
LISBETH ALEXANDRA VASQUEZ CIEZA
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion BusquedaAngie Suarez
 
Funciones Internas
Funciones Internas Funciones Internas
Funciones Internas
Gerson Cabezas
 
10 ejercicios-de-do-while
10 ejercicios-de-do-while10 ejercicios-de-do-while
10 ejercicios-de-do-whileDelvi Ramirez
 
Articulo Autómata (push down)
Articulo Autómata (push down)Articulo Autómata (push down)
Articulo Autómata (push down)Scarlinr
 
maquinas de turing jflap
maquinas de turing jflapmaquinas de turing jflap
maquinas de turing jflap
Anel Sosa
 
Lenguajes formales
Lenguajes formalesLenguajes formales
Lenguajes formales
Isabel
 
Manual de PSeInt
Manual de PSeIntManual de PSeInt
Manual de PSeInt
Cristian C
 
2.1 Lenguaje de Programación C y su Entorno
2.1 Lenguaje de Programación C y su Entorno2.1 Lenguaje de Programación C y su Entorno
2.1 Lenguaje de Programación C y su EntornoMeztli Valeriano Orozco
 
Arquitectura pipeline
Arquitectura pipelineArquitectura pipeline
Arquitectura pipelinerehoscript
 
Registros de la cpu
Registros de la cpuRegistros de la cpu
Registros de la cpujomapuga
 
Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.
Manuel Fernandez Barcell
 

La actualidad más candente (20)

Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)
 
Introducción a Turbo Pascal
Introducción a Turbo PascalIntroducción a Turbo Pascal
Introducción a Turbo Pascal
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
Caracteres y Cadenas en C
Caracteres y Cadenas en CCaracteres y Cadenas en C
Caracteres y Cadenas en C
 
Div, idiv, Neg ensamblador
Div, idiv, Neg ensambladorDiv, idiv, Neg ensamblador
Div, idiv, Neg ensamblador
 
INSTRUCCIONES REPETITIVAS EN ASSEMBLER
INSTRUCCIONES REPETITIVAS EN ASSEMBLERINSTRUCCIONES REPETITIVAS EN ASSEMBLER
INSTRUCCIONES REPETITIVAS EN ASSEMBLER
 
Programacion practica prolog
Programacion practica prologProgramacion practica prolog
Programacion practica prolog
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion Busqueda
 
Funciones Internas
Funciones Internas Funciones Internas
Funciones Internas
 
10 ejercicios-de-do-while
10 ejercicios-de-do-while10 ejercicios-de-do-while
10 ejercicios-de-do-while
 
Articulo Autómata (push down)
Articulo Autómata (push down)Articulo Autómata (push down)
Articulo Autómata (push down)
 
maquinas de turing jflap
maquinas de turing jflapmaquinas de turing jflap
maquinas de turing jflap
 
Lenguajes formales
Lenguajes formalesLenguajes formales
Lenguajes formales
 
ESTRUCTURAS REPETITIVAS
ESTRUCTURAS REPETITIVASESTRUCTURAS REPETITIVAS
ESTRUCTURAS REPETITIVAS
 
Pruebas de escritorio
Pruebas de escritorioPruebas de escritorio
Pruebas de escritorio
 
Manual de PSeInt
Manual de PSeIntManual de PSeInt
Manual de PSeInt
 
2.1 Lenguaje de Programación C y su Entorno
2.1 Lenguaje de Programación C y su Entorno2.1 Lenguaje de Programación C y su Entorno
2.1 Lenguaje de Programación C y su Entorno
 
Arquitectura pipeline
Arquitectura pipelineArquitectura pipeline
Arquitectura pipeline
 
Registros de la cpu
Registros de la cpuRegistros de la cpu
Registros de la cpu
 
Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.
 

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 3
UVM
 
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
UVM
 
Breve repaso de apuntadores
Breve repaso de apuntadoresBreve repaso de apuntadores
Breve repaso de apuntadores
UVM
 
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
UVM
 
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
UVM
 
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 apuntadores
UVM
 
Resumen de funciones
Resumen de funcionesResumen de funciones
Resumen de funciones
UVM
 
Arreglos conceptos básicos
Arreglos conceptos básicosArreglos conceptos básicos
Arreglos conceptos básicos
UVM
 
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 usuario
UVM
 
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 datos
UVM
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funciones
UVM
 

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
 
tipos de operadores
tipos de operadores tipos de operadores
tipos de operadores
Gustavo Castillo
 
Unidad aritmetico logica ALU
Unidad aritmetico logica ALUUnidad aritmetico logica ALU
Unidad aritmetico logica ALU
Astrid Ximena Hernandez Piedrahita
 
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
Tipos de operadoresTipos de operadores
Tipos de operadores
Rosario Garcia Ruiz
 
Tipos de operadores_dulce_velazquez
Tipos de operadores_dulce_velazquezTipos de operadores_dulce_velazquez
Tipos de operadores_dulce_velazquez
Rosario Garcia Ruiz
 
Tipos de operadores_velazquez
Tipos de operadores_velazquezTipos de operadores_velazquez
Tipos de operadores_velazquez
Rosario Garcia Ruiz
 
Tipos de operadores_dulce
Tipos de operadores_dulceTipos de operadores_dulce
Tipos de operadores_dulce
Rosario Garcia Ruiz
 
Operadores de c_..
Operadores de c_..Operadores de c_..
Operadores de c_..
Idalia Tristan
 
OPERADORES PARA C++
OPERADORES PARA C++OPERADORES PARA C++
OPERADORES PARA C++
Idalia Tristan
 
C sharp
C sharpC sharp
C sharp
Elena Gomez
 
Diapo04
Diapo04Diapo04
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 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
Tipos de operadoresTipos de operadores
Tipos de operadores
 
Tipos de operadores_dulce_velazquez
Tipos de operadores_dulce_velazquezTipos de operadores_dulce_velazquez
Tipos de operadores_dulce_velazquez
 
Tipos de operadores_velazquez
Tipos de operadores_velazquezTipos de operadores_velazquez
Tipos de operadores_velazquez
 
Tipos de operadores_dulce
Tipos de operadores_dulceTipos de operadores_dulce
Tipos de operadores_dulce
 
Operadores de c_..
Operadores de c_..Operadores de c_..
Operadores de c_..
 
OPERADORES PARA C++
OPERADORES PARA C++OPERADORES PARA C++
OPERADORES PARA 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 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ón
UVM
 
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
UVM
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempo
UVM
 
Administración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosAdministración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicos
UVM
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglos
UVM
 
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 parcial
UVM
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
UVM
 
Namespaces y C#
Namespaces y C#Namespaces y C#
Namespaces y C#
UVM
 
Tipos de herencia
Tipos de herenciaTipos de herencia
Tipos de herencia
UVM
 
Herencia 1ª parte
Herencia 1ª parteHerencia 1ª parte
Herencia 1ª parte
UVM
 
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
UVM
 
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
UVM
 
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
UVM
 
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

CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
auxsoporte
 
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptxAutomatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
GallardoJahse
 
Mapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativaMapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativa
TatianaVanessaAltami
 
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdfFORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
El Fortí
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
SandraBenitez52
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
BetzabePecheSalcedo1
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
Alejandrino Halire Ccahuana
 
El fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amorEl fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amor
Alejandrino Halire Ccahuana
 
Testimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdfTestimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdf
Txema Gs
 
Sesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdfSesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdf
https://gramadal.wordpress.com/
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
JAVIER SOLIS NOYOLA
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
DivinoNioJess885
 
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
UNIDAD DE APRENDIZAJE DEL MES  Junio 2024UNIDAD DE APRENDIZAJE DEL MES  Junio 2024
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
EdwardYumbato1
 
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdfT3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
eliecerespinosa
 
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia leeevalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
MaribelGaitanRamosRa
 
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfAsistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Demetrio Ccesa Rayme
 
Introducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BIIntroducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BI
arleyo2006
 
Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptx
LorenaCovarrubias12
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
YolandaRodriguezChin
 
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Monseespinoza6
 

Último (20)

CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
 
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptxAutomatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
 
Mapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativaMapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativa
 
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdfFORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
 
El fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amorEl fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amor
 
Testimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdfTestimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdf
 
Sesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdfSesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdf
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
 
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
UNIDAD DE APRENDIZAJE DEL MES  Junio 2024UNIDAD DE APRENDIZAJE DEL MES  Junio 2024
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
 
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdfT3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
 
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia leeevalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
 
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfAsistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
 
Introducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BIIntroducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BI
 
Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptx
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
 
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
 

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