MANEJO DE BITS Lenguajes de programación LPSI EUI UPM OPERADORES • Operan bit a bit • Las operaciones a nivel de bit son dependientes de la máquina • Operador & (AND lógico de bits) 204 & 121 -> 72 11001100 & 01111001 0100 1000 Lenguajes de programación LPSI EUI UPM OPERADORES • Operador | (OR lógico de bits): 204 & 121 -> 253 11001100 | 01111001 11111101 Lenguajes de programación LPSI EUI UPM OPERADORES • Operador ^ (OR exclusivo de bits): 204 ^ 121 -> 181 11001100 ^ 01111001 10 110101 Lenguajes de programación LPSI EUI UPM OPERADORES • Operador ~ (ALT+126) ~ 204 -> 51 ~ 11001100 (complemento a 1): -> 0 0 1 1 0 0 1 1 Lenguajes de programación LPSI EUI UPM OPERADORES • Operador >> (desplazamiento a la dcha): V >> n desplaza V n bits a la dcha, rellenando con ceros por la izda 204 >> 3 -> 25 1 1 0 0 1 1 0 0 >> 3 -> 0 0 0 1 1 0 0 1 Lenguajes de programación LPSI EUI UPM OPERADORES • Operador << (desplazamiento a la izda): V << n desplaza V n bits a la izda, rellenando con ceros por la dcha 204 << 3 -> 96 1 1 0 0 1 1 0 0 << 3 -> 0 1 1 0 0 0 0 0 Lenguajes de programación LPSI EUI UPM OPERADORES • Asignaciones: &= |= ^= >>= <<= a &= b a |= b a ^= b a >>= b a <<= b Æ Æ Æ Æ Æ a=a&b a=a|b a=a^b a = a >> b a = a << b Lenguajes de programación LPSI EUI UPM operador asociatividad () [ ] . -> ! ++ -- - (tipo) sizeof & * ~ * / % + << >> < <= > >= == != & ^ | && || ?: i–d d–i i–d i–d i–d i–d i–d i–d i–d i–d i–d i–d d–i = += -= *= /= %= &= |= ^= <<= >>= d – i Lenguajes de programación LPSI EUI UPM EJERCICIOS • Escribir una función que, pasándole un carácter, imprima la representación binaria del mismo. • Escribir una función que, recibiendo como parámetro un entero sin signo, devuelva como resultado un entero resultante de cambiar los bits al pasado como parámetro. • Escribir una función que, pasándole un entero sin signo, le cambie los bits y, además, lo devuelva como resultado. Lenguajes de programación LPSI EUI UPM EJERCICIOS • Escribir una función que, recibiendo como parámetros un array de enteros y la dimensión del array, devuelva como resultado el número total de bits a 1 que hay en el array. • Escribir una función que, pasándole como parámetro un array de n cadenas de caracteres (n se pasa como parámetro también), devuelva la cadena con mayor número de bits a 1. Lenguajes de programación LPSI EUI UPM EJERCICIOS • Escribir una función que, recibiendo como parámetro un entero long, devuelva otro long resultante de copiar los bits que ocupan posiciones impares del número pasado como parámetro y poner a cero los bits pares. Lenguajes de programación LPSI EUI UPM EJERCICIOS • Escribir una función que, recibiendo como parámetros dos cadenas de caracteres, devuelva un número negativo, positivo o cero, en función de que la primera cadena tenga menos, más o igual número de bits a 0 que la segunda. • Escribir un programa que lea un número entero y un valor n, entre 2 y 10, ponga a cero los n bits centrales del número leído y muestre el resultado por pantalla. Lenguajes de programación LPSI EUI UPM EJERCICIOS • Escribir una función que, recibiendo dos números enteros, intercambie entre sí los 8 bits de mayor peso del primero con los 8 bits de menor peso del segundo. • Escribir una función que recibiendo como parámetro un long double, devuelva a partir de él una cadena de caracteres resultante de convertir cada byte del número en un carácter de la cadena, empezando por los de menor peso. Lenguajes de programación LPSI EUI UPM