Definir 4 bits bajos o altos

#1
Hola,

una pregunta, supongo que muy básica, pero no he encontrado respuesta.
Como puedo hacer que esta instrucción por ejemplo solo sea para los 4 bits bajos del byte en c+, sin cambiar el valor que haya en los 4 bits altos?

#define DON 0b00001111 // megustaria que fuese 0b????1111

seria hacerlo en octal así? #define DON 17



ups, creo que ya lo encontré, justo ese define de 0b00001111 hace que solo use los 4 bajos, verdad?
 
Última edición:
#2
Podes hacerlo de varias maneras, una es usando una mascara como vos pusiste, pero no alcanza con definir la mascara.

Supongamos que tu dato original esta en una variable orig, la mascara en mask y los bit nuevos que queres escribir en la variable bitnuevos, el comando seria:

orig = (orig & ~mask) | (bitnuevos & mask);
 
#3
Gracias chclau.



Hola,

como introduzco este signo en el c18 compiler? he hecho un copy-paste y me da error de sintaxis.
que otras maneras hay para hacer esta operación? me extraña que no haya una función directa siendo algo que creo usual.
Gracias.
 
Última edición:
#4
No se ve a que signo te refieres peromsupongo que es este ~. No creo que el compilador no lo soporte, es una funcion basica de C, bitwise NOT.
 
Arriba