//start program, bit test.c #include typedef union struct unsigned bito 1; unsig
ID: 3862288 • Letter: #
Question
//start program, bit test.c #include typedef union struct unsigned bito 1; unsigned bit1:1; unsigned bit2 1; unsigned bit3 1; unsigned nibble a 1; unsigned nibble2 b 1 unsigned nibble2 c 1; unsigned nibble2 d :1; unsigned byte2 8 struct unsigned hex0 4; unsigned hex1 :4; unsigned hexbits 8; short bit in nibble; int main() nibble num1, num2, results num1 bit int-0 num2 bit int-0 printf Enter number1 nibble from O-15 "); f %d'', &num1-bit; nt Scan printf Enter number2 nibble from 0-15V n f("%d'', &num2.bit; int Scan results. bit int num1.bit nt num2.bit nt printf bits %d%d%d%d (%dJox%X%X) '', num1.bit3, num1.bit2, num1.bit1, num1.bito, num1.bit nt, num1.hex1. num1.hex0 ("num1 printf bitsJ5%d%d%d%d (%dJox%X%X) '', num2.bit3, num2.bit2, num2.bit1, num2.bito, num2.bit nt, num2.hex1. num2.hex0 ("num2 print results bits %d%d%d%d%d%d%d%d (%d-0x%X%X)W results.nibble2 d, results.nibble2_c, results.nibble2 b results nibble2 a esults.bit3, results.bit2, results.bit1, esults.bito, results.bit in t, results.hex1, esults hex0 return 0; //end program OUTPUT Enter number nibble from 0-15 Enter number2 nibble from O-15 13 num1 bits 1111 (15-0x0F) num2 1101 (1 3-0x0D) +results bitsJ00011100 (28 0x1C) Process returned 0 (0x0) execution time 5.359 s Press any key to continue.Explanation / Answer
#include <stdio.h>
typedef union
{
struct{
unsigned bit0 : 1;
unsigned bit1 : 1;
unsigned bit2 : 1;
unsigned bit3 : 1;
unsigned nibble2_a : 1;
unsigned nibble2_b : 1;
unsigned nibble2_c : 1;
unsigned nibble2_d : 1;
unsigned byte2 : 8;
};
struct{
unsigned hex0 : 4;
unsigned hex1 : 4;
unsigned hexbits : 8;
};
short bit_int;
}nibble;
int main(void)
{
char ch = 'c';
int num;
nibble num1,num2,results,results1,results2;
num1.bit_int = 0;
num2.bit_int = 0;
while(ch == 'c')
{
printf("Please choose following options to perform: ");
printf("1. Add 2. Subtract 3. AND 4. OR 5. XOR 6. NOT 7. Shift-Left 8. Shift-Right 9. Exit ");
scanf("%d", &num);
if(num != 9)
{
printf("Enter number1 nibble from 0-15 ");
scanf("%hd",&num1.bit_int);
printf("Enter number2 nibble from 0-15 ");
scanf("%hd",&num2.bit_int);
}
switch(num)
{
case 1: results.bit_int = num1.bit_int + num2.bit_int;
printf("num1 bits =%d%d%d%d (%d = 0x%X%X) ", num1.bit3, num1.bit2, num1.bit1, num1.bit0, num1.bit_int, num1.hex1, num1.hex0);
printf("num2 bits =%d%d%d%d (%d = 0x%X%X) ", num2.bit3, num2.bit2, num2.bit1, num2.bit0, num2.bit_int, num2.hex1, num2.hex0);
printf("+results =%d%d%d%d%d%d%d%d (%d = 0x%X%X) ", results.nibble2_d, results.nibble2_c, results.nibble2_b, results.nibble2_a, results.bit3, results.bit2, results.bit1, results.bit0, results.bit_int, results.hex1, results.hex0);
break;
case 2: results.bit_int = num1.bit_int - num2.bit_int;
printf("num1 bits =%d%d%d%d (%d = 0x%X%X) ", num1.bit3, num1.bit2, num1.bit1, num1.bit0, num1.bit_int, num1.hex1, num1.hex0);
printf("num2 bits =%d%d%d%d (%d = 0x%X%X) ", num2.bit3, num2.bit2, num2.bit1, num2.bit0, num2.bit_int, num2.hex1, num2.hex0);
printf("-results =%d%d%d%d%d%d%d%d (%d = 0x%X%X) ", results.nibble2_d, results.nibble2_c, results.nibble2_b, results.nibble2_a, results.bit3, results.bit2, results.bit1, results.bit0, results.bit_int, results.hex1, results.hex0);
break;
case 3: results.bit_int = num1.bit_int & num2.bit_int;
printf("num1 bits =%d%d%d%d (%d = 0x%X%X) ", num1.bit3, num1.bit2, num1.bit1, num1.bit0, num1.bit_int, num1.hex1, num1.hex0);
printf("num2 bits =%d%d%d%d (%d = 0x%X%X) ", num2.bit3, num2.bit2, num2.bit1, num2.bit0, num2.bit_int, num2.hex1, num2.hex0);
printf("&results =%d%d%d%d%d%d%d%d (%d = 0x%X%X) ", results.nibble2_d, results.nibble2_c, results.nibble2_b, results.nibble2_a, results.bit3, results.bit2, results.bit1, results.bit0, results.bit_int, results.hex1, results.hex0);
break;
case 4: results.bit_int = num1.bit_int | num2.bit_int;
printf("num1 bits =%d%d%d%d (%d = 0x%X%X) ", num1.bit3, num1.bit2, num1.bit1, num1.bit0, num1.bit_int, num1.hex1, num1.hex0);
printf("num2 bits =%d%d%d%d (%d = 0x%X%X) ", num2.bit3, num2.bit2, num2.bit1, num2.bit0, num2.bit_int, num2.hex1, num2.hex0);
printf("|results =%d%d%d%d%d%d%d%d (%d = 0x%X%X) ", results.nibble2_d, results.nibble2_c, results.nibble2_b, results.nibble2_a, results.bit3, results.bit2, results.bit1, results.bit0, results.bit_int, results.hex1, results.hex0);
break;
case 5: results.bit_int = num1.bit_int ^ num2.bit_int;
printf("num1 bits =%d%d%d%d (%d = 0x%X%X) ", num1.bit3, num1.bit2, num1.bit1, num1.bit0, num1.bit_int, num1.hex1, num1.hex0);
printf("num2 bits =%d%d%d%d (%d = 0x%X%X) ", num2.bit3, num2.bit2, num2.bit1, num2.bit0, num2.bit_int, num2.hex1, num2.hex0);
printf("^results =%d%d%d%d%d%d%d%d (%d = 0x%X%X) ", results.nibble2_d, results.nibble2_c, results.nibble2_b, results.nibble2_a, results.bit3, results.bit2, results.bit1, results.bit0, results.bit_int, results.hex1, results.hex0);
break;
case 6: results1.bit_int = ~num1.bit_int;
results2.bit_int = ~num2.bit_int;
printf("num1 bits =%d%d%d%d (%d = 0x%X%X) ", num1.bit3, num1.bit2, num1.bit1, num1.bit0, num1.bit_int, num1.hex1, num1.hex0);
printf("num2 bits =%d%d%d%d (%d = 0x%X%X) ", num2.bit3, num2.bit2, num2.bit1, num2.bit0, num2.bit_int, num2.hex1, num2.hex0);
printf("~results1 =%d%d%d%d%d%d%d%d (%d = 0x%X%X) ", results1.nibble2_d, results1.nibble2_c, results1.nibble2_b, results1.nibble2_a, results1.bit3, results1.bit2, results1.bit1, results1.bit0, results1.bit_int, results1.hex1, results1.hex0);
printf("~results1 =%d%d%d%d%d%d%d%d (%d = 0x%X%X) ", results2.nibble2_d, results2.nibble2_c, results2.nibble2_b, results2.nibble2_a, results2.bit3, results2.bit2, results2.bit1, results2.bit0, results2.bit_int, results2.hex1, results2.hex0);
break;
case 7: results.bit_int = num1.bit_int << num2.bit_int;
printf("num1 bits =%d%d%d%d (%d = 0x%X%X) ", num1.bit3, num1.bit2, num1.bit1, num1.bit0, num1.bit_int, num1.hex1, num1.hex0);
printf("num2 bits =%d%d%d%d (%d = 0x%X%X) ", num2.bit3, num2.bit2, num2.bit1, num2.bit0, num2.bit_int, num2.hex1, num2.hex0);
printf("<<results =%d%d%d%d%d%d%d%d (%d = 0x%X%X) ", results.nibble2_d, results.nibble2_c, results.nibble2_b, results.nibble2_a, results.bit3, results.bit2, results.bit1, results.bit0, results.bit_int, results.hex1, results.hex0);
break;
case 8: results.bit_int = num1.bit_int >> num2.bit_int;
printf("num1 bits =%d%d%d%d (%d = 0x%X%X) ", num1.bit3, num1.bit2, num1.bit1, num1.bit0, num1.bit_int, num1.hex1, num1.hex0);
printf("num2 bits =%d%d%d%d (%d = 0x%X%X) ", num2.bit3, num2.bit2, num2.bit1, num2.bit0, num2.bit_int, num2.hex1, num2.hex0);
printf(">>results =%d%d%d%d%d%d%d%d (%d = 0x%X%X) ", results.nibble2_d, results.nibble2_c, results.nibble2_b, results.nibble2_a, results.bit3, results.bit2, results.bit1, results.bit0, results.bit_int, results.hex1, results.hex0);
break;
case 9: ch = 'q';
printf("Exiting... ");
return 1;
break;
default :
return 1;
}
printf("Press any key to continue ");
scanf("%c", &ch);
}
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.