Code:
#include <stdio.h>
#include <math.h>
int main ()
{
unsigned int a;
unsigned int b;
char c;
unsigned int and;
unsigned int or;
unsigned int exor;
unsigned int shiftleft;
unsigned int shiftright;
unsigned int add;
unsigned int subtract;
printf("32-bit ALU simulator by Tom Bruls.\n\n");
printf("Please enter the values of operands a and b in hex :\n");
scanf(" %x %x", &a, &b);
printf("Enter operation code (And, Or, eXor, shift Left, shift Right, +, -) :\n");
scanf(" %c", &c);
switch (c)
{
case 'a': //and
and = a & b;
printf("Hexadecimal result: %x %c %x = %x\n", a,c,b,and);
printf("Decimal result: %d %c %d = %d\n", a,c,b,and);
break;
case 'o': //or
or = a | b;
printf("Hexadecimal result: %x %c %x = %x\n", a,c,b,or);
printf("Decimal result: %d %c %d = %d\n", a,c,b,or);
break;
case 'x': //exor
exor = a ^ b;
printf("Hexadecimal result: %x %c %x = %x", a,c,b,exor);
printf("Decimal result: %d %c %d = %d\n", a,c,b,exor);
break;
case 'l': //shift left
shiftleft = a << b;
printf("Hexadecimal result: %x %c %x = %x\n", a,c,b,shiftleft);
printf("Decimal result: %d %c %d = %d\n", a,c,b,shiftleft);
break;
case 'r': //shift right
shiftright = a >> b;
printf("Hexadecimal result: %x %c %x = %x\n", a,c,b,shiftright);
printf("Decimal result: %d %c %d = %d\n", a,c,b,shiftright);
break;
case '+': //+
add = a + b;
printf("Hexadecimal result: %x %c %x = %x\n", a,c,b,add);
printf("Decimal result: %d %c %d = %d\n", a,c,b,add);
break;
case '-': //-
subtract = a - b;
printf("Hexadecimal result: %x %c %x = %x\n", a,c,b,subtract);
printf("Decimal result: %d %c %d = %d\n", a,c,b,subtract);
break;
default:
printf("illegal operation code\n");
return (0);
break;
}
}