#include <stdio.h>
#include <stdlib.h>
void myPrint(char *fnName, unsigned int result);
void myPrintSigned(char *fnName, int result);
extern "C" {
unsigned int unsigned_shift_and(unsigned int val_a, unsigned int val_b);
unsigned int unsigned_shift_or_not(unsigned int val_a, unsigned int val_b);
int signed_shift_and_not(int sVal_a, int sVal_b);
int signed_not_shift_xor(int sVal_a, int sVal_b);
}
void setup() {
Serial1.begin(9600);
}
void loop() {
unsigned int val_a = 16;
unsigned int val_b = 3;
int sVal_a = -8;
int sVal_b = 2;
unsigned int result1 = unsigned_shift_and(val_a, val_b);
myPrint("unsigned_shift_and()", result1);
unsigned int result2 = unsigned_shift_or_not(val_a, val_b);
myPrint("unsigned_shift_or_not()", result2);
int result3 = signed_shift_and_not(sVal_a, sVal_b);
myPrintSigned("signed_shift_and_not()", result3);
int result4 = signed_not_shift_xor(sVal_a, sVal_b);
myPrintSigned("signed_not_shift_xor()", result4);
delay(5000); // Delay to observe the results
}
void myPrint(char *fnName, unsigned int result) {
Serial1.print("The result of ");
Serial1.print(fnName);
Serial1.print(" is: ");
Serial1.println(result, DEC);
}
void myPrintSigned(char *fnName, int result) {
Serial1.print("The result of ");
Serial1.print(fnName);
Serial1.print(" is: ");
Serial1.println(result, DEC);
}