unsigned char test;
void setup() {
// NO MODIFICAR este código!
Serial.begin(115200);
presentacion();
}
void loop() {
// Ejemplo de salida del primer punto
Serial.println("Ejemplo de salida esperada punto 1:");
test = impar(12);
if(test == 0) Serial.println("El valor es par");
if(test == 1) Serial.println("El valor es impar");
test = impar(5);
if(test == 0) Serial.println("El valor es par");
if(test == 1) Serial.println("El valor es impar");
// Ejemplo de salida del segundo punto
Serial.println("Ejemplo de salida esperada punto 2:");
test = toggle(0b11001101, 2);
Serial.print("Salida calculada = "); Serial.print(test, BIN);
if(test == 0b11001001){
Serial.println(" correcta!!");
} else {
Serial.println(" incorrecta!!");
}
// Ejemplo de salida del tercer punto
Serial.println("Ejemplo de salida esperada punto 3:");
test = swap(0b10100110);
Serial.print("Salida calculada = "); Serial.print(test, BIN);
if(test == 0b01101010){
Serial.println(" correcta!!");
} else {
Serial.println(" incorrecta!!");
}
// Ejemplo de salida del cuarto punto
Serial.println("Ejemplo de salida esperada punto 4:");
test = reset(0b00100111,0);
Serial.print("Salida calculada = "); Serial.print(test, BIN);
if(test == 0b00100110){
Serial.println(" correcta!!");
} else {
Serial.println(" incorrecta!!");
}
// Ejemplo de salida del quinto punto
Serial.println("Ejemplo de salida esperada punto 5:");
test = set(0b00100101,1);
Serial.print("Salida calculada = "); Serial.print(test, BIN);
if(test == 0b00100111){
Serial.println(" correcta!!");
} else {
Serial.println(" incorrecta!!");
}
while(1);
}
/*
Punto 1.
Diseñar una función que identifique si un numero es par o impar
sin usar condicionales IF.
Entradas a la función:
valor: entero con signo
Salidas de la función:
retorna 0- el valor de entrada es par
retorna 1- el valor de entrada es impar
*/
unsigned char impar(int valor){
return valor & 1; // <----------- Cambie este valor de salida para que la funcion opere correctamente
}
/*
Punto 2.
Diseñar una función que invierta (TOGGLE) el valor de un bit especifico.
Entradas a la función:
valor: char sin signo
numeroBit: el numero de bit que se desea invertir
Salidas de la función:
retorna el valor con el bit modificado
*/
unsigned char toggle(unsigned char valor, char numeroBit){
unsigned char bit_Deseado = 1 << numeroBit;
return valor ^ bit_Deseado; // <----------- Cambie este valor de salida para que la funcion opere correctamente
}
/*
Punto 3.
Diseñar una función que invierta (SWAP) los nibbles de un valor de entrada.
Entradas a la función:
valor: char sin signo
Salidas de la función:
retorna el valor con los nibbles invertidos
*/
unsigned char swap(unsigned char valor){
return ((valor << 4) | (valor >> 4)); // <----------- Cambie este valor de salida para que la funcion opere correctamente
}
/*
Punto 4.
Diseñar una función que ponga en cero (RESET) un bit especifico de un valor de
entrada.
Entradas a la función:
valor: char sin signo
numeroBit: el numero de bit que se desea borrar
Salidas de la función:
retorna el valor con el bit especificado valiendo 0
*/
unsigned char reset(unsigned char valor, char numeroBit){
unsigned char bits = ~(1 << numeroBit);
return valor & bits; // <----------- Cambie este valor de salida para que la funcion opere correctamente
}
/*
Punto 5.
Diseñar una función que ponga en uno (SET) un bit especifico de un valor de
entrada.
Entradas a la función:
valor: char sin signo
numeroBit: el numero de bit que se desea borrar
Salidas de la función:
retorna el valor con el bit especificado valiendo 1
*/
unsigned char set(unsigned char valor, char numeroBit){
unsigned char bit_deseado = 1 << numeroBit;
return valor |bit_deseado; // <----------- Cambie este valor de salida para que la funcion opere correctamente
}
/*
Punto extra.
Diseñar una función que intercambie el valor de dos variables
sin usar ninguna otra variable y empleando la función XOR
Entradas a la función:
valorA: char sin signo
valorB: char sin signo
Salidas de la función:
presenta el valor de las variables intercambiadas
*/
unsigned char intercambiar(unsigned char valorA, unsigned char valorB){
// NO MODIFICAR este código!
String a = "el valor de la variable A es: " + String(valorA);
String b = "el valor de la variable B es: " + String(valorB);
Serial.println(a);
Serial.println(b);
// Escriba su código a partir de este punto!
// NO MODIFICAR este código!
a = "el valor de la variable A es: " + String(valorA);
b = "el valor de la variable B es: " + String(valorB);
Serial.println();
}
// -----------------------------------------------------------------------------------------
// NO ALTERAR NINGUNA PARTE DE ESTE CODIGO!!
// -----------------------------------------------------------------------------------------
void presentacion(){
String a = "Actividad de Bitwising\n\n";
a += "Escribir el codigo necesario para que cada funcion haga la tarea que se define en cada\n";
a += "comentario encabezando cada una de las funciones presentadas\n\n";
a += "En la funcion loop encuentra pruebas del uso de cada funcion como guia para prueba de cada funcion";
Serial.println(a);
}