Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Parte 3 Del Resumen de Progamacion
Parte 3 Del Resumen de Progamacion
Operadores Lógicos
Combinan dos o más expresiones de relación. En lenguaje C esxisten tres operadores
lógicos, los cuales son los siguientes;
OPERADOR ACCIÓN
&& AND
11 OR
¡ NOT
Los operadores lógicos producen un resultado verdadero (1) o falso (0), como se puede
ver en la siguiente tabla.
p q p&&q p11q ¡p
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0
donde:
1, es verdadero
0, es falso
En lenguaje C se garantiza las expresiones lógicas se evalúen de izquierda a derecha.
También se garantiza que tan pronto se encuentre un elemento que invada la expresión
completa, cesa la evaluación de la expresión. Por ejemplo:
Al evaluar la siguiente expresión:
Numero ¡=0 &&12 / numero>=0
Si número tiene un valor de 0, la sobrexpresión izquierda al operador && es falsa y por
ende toda la expresión es falsa, por lo que el resto de la misma no se evalúa, evitándose
una división por cero. De igual forma se cumple para el operador ll: basta el primero
operando sea verdadero para obtener la verdad.
Operadores a Nivel de Bits
Ya que el lenguaje C fue diseñado para sustituir al lenguaje ensamblador en muchas
tareas de programación, cubre todas las operaciones que se pueden hacer en
ensamblador.
Las operaciones a nivel bits tratan de la comprobación, asignación o desplazamiento de
los bits individuales que componen un byte o una palabra de memoria, que a su vez
corresponden a los tipos estándar del lenguaje C: char e int con sus variantes.
Las operaciones a nivel de bits no pueden ser usados sobre los tipos: float, doublé, long
doublé y void.
OPERADOR ACCIÓN
& AND
l OR
ˆ OR exclusiva (XOR)
~ Complemento a 1 (NOT)
>> Desplazamiento a la derecha
<< Desplazamiento a la izquierda
Los operadores AND, OR y NOT a nivel de bits están regidos por las mismas tablas de
verdad que sus equivalentes lógicos, pero trabajan bit a bit.
La tabla de verdad del operador XOR. A continuación.
p q p ˆ q
0 0 0
0 1 1
0 0 1
0 1 0
Las operaciones sobre bits son usadas con frecuencia en aplicaciones de controladores
de dispositivos, tal como en programas para modems, rutinas de archivos de disco y
rutonas de impresora. Ya que permiten enmarcar ciertos bits, como puede ser el bit de
pariedad.
Descripción de cada operador:
Operación AND, pone los bits a cero, pues cualquier bit que esté a cero en un operando
hará que el correspondiente bit de la variable se ponga en cero.
Ejemplo. 5&127 seria:
00000101 (5)
& 01111111 (127)
00000101
Operación OR. pone los bits a uno, pues cualquier bit que esté a uno en un operando
hará que el correspondiente bit de la variable se ponga a uno.
10000000 (128)
& 00000011 (3)
00000011
Operación XOR. pone los bits a uno, cuando los bits de los operadores son distintos.
01111111 (127)
& 01111000 (120)
00000111
Las operaciones de desplazamiento, >> y <<, mueven todos los bits de una variable a la
derecha o a la izquierda, respectivamente.
La expresión de desplazamiento a la derecha es:
variable >> número de posiciones en bits
La expresión de desplazamiento a la izquierda es:
variable << número de posiciones en bits
un desplazamiento no puede ser una rotación, ya que lis bits que salen por un extremo
se pierden, es decir, no se introducen por el otro extremo, ya que a medida que los bits
se desplazan hacia un extremo, se van rellenando con ceros por el extremo opuesto.
Las operaciones de desplazamiento de bits pueden utilizarse para llevar a cabo
operaciones muy rápidas de multiplicación y división de enteros, asi:
Un desplazamiento a la izquierda equivale a una multiplicación por 2.
Un desplazamiento a la derecha equivale a una división por 2.
Por ejemplo:
Los operadores a nivel de bits son útiles cuando se decodifica la entrada a través de
dispositivos externos, como conversores D/A. también se usa en rutinas para descifrado,
cuando se quiere que el archivo aparezca ilegible. Uno de los métodos más sencillos es
el de complementar cada byte usando el complemento a uno para invertir cada bit del
byte, como ejemplo se tiene el doble complemento en un byte produce el mismo valor:
Byte original: 01011000
Complemento a 1: 10100111
Complemento a 1: 01011000 (Dato original)
Otros operadores
El operador ?:
Es un operador condicional que abrevia a la sentencia de control if-else, y se denomina
“expresión condicional”.
Este operador ternario toma la forma general:
Expresión1 ? Expresion2 : Expresión3
Si Expresión1 es verdadera (distinta de cero) la expresión total toma el valor de
Expersion2.
Si Expresión1 es verdadera (igual de cero) la expresión total toma el valor de
Expersion3.
Por ejemplo, calcular el valor absoluto de un número entero:
X=(y<0) ? -y : y;
Si y < 0, entonces x toma el valor de -y.
Si y >= 0, entonces x toma el valor de y.
Entonces, el operador ?: se usa cuando se tiene una variable que puede tomar dos
valores posibles.
NOTA: Para mejor claridad del programa en lenguaje C, la condición de las sentencias
ca entre paréntesis.
Operadores & y *
Para entender estos operadores se debe conocer lo siguiente:
Un puntero. Dirección de memoria d una variable de cualquier tipo, que se fija en el
momento de la compilación.
En lenguaje C tienen tres funciones básicas:
Proporcionar una rápida forma de referenciar los elementos de un arreglo.
Permiten a las funciones de lenguaje C modificar los parámetros de llamada.
Dan soporte a las listas enlazadas y a otras dinámicas de datos
Variable puntero. Variable declarada para almacenar un puntero a su tipo especificado.
Esta variable debe declararse colocando un * delante del nombre de la variable.
int*m, cont, q;
donde: m es una variable puntero a entero, mientras cont y q son variables de tipo int,
Tipo base de del puntero. Tipo de dato al que apunta un puntero, en este caso int.
Operador de Dirección &.- operador unario que devuelve dirección de
memoria del operador
m = & cont;