If you are here first time, I would recommend to read Bitwise Operators - Find output programs (set -1) first.
This is a second set of find output programs on C language Bitwise Operators; each question has correct output and explanation about the answer.
Program - 1
#include <stdio.h>
int main()
{
unsigned char a=0xFA;
a= (a>>4) | (a<<4);
printf("a = %02X\n",a);
return 0;
}
Program - 2
#include <stdio.h>
int main()
{
unsigned char a=0xFA;
char loop;
for(loop=7; loop>=0; loop--)
printf("%d ",(a & (1<<loop))?1:0);
printf("\n");
return 0;
}
Program - 3
#include <stdio.h>
int main()
{
unsigned char a=0xAA;
unsigned char b=0x55;
printf("(a^b): %02X\n",(a^b));
return 0;
}
Program - 4
#include <stdio.h>
int main()
{
unsigned char a=0xAA;
a= (a^0x55);
a= (a^0x55);
printf("a= %02X\n",a);
return 0;
}
Answer Program 1:
Output
Explanation
The expression a= (a>>4) | (a<<4); will swap the nibbles, here a>>4 will shift the last 4 bits (from 7 to 4) to the first 4 position (3 to 0) and statement a<<4 will shift the first 4 bits from (0 to 3), to the last 4 position (from 4 to 7). And the Bitwise OR ('|') operator will add both of the nibbles, thus the output will be AF (swapped nibbles).
Answer Program 2:
Output
Explanation
This program is to get BINARY value of any 8 bits integer number, expression (a & (1<<loop))?1:0 will check whether particular bit is set (high) or not, if it is set (high), '1' will print else '0' will print.
Answer Program 3:
Output
Explanation
Bitwise XOR (^) returns 1, if one operand's bit is 1 and other operand's bit is 0, consider the given truth table:
Thus, the output will be "FF".
Answer Program 4:
Output
Explanation
When, some value is XORed with a number twice, same (initial value) returns.
need an explanation for this answer? contact us directly to get an explanation for this answerConsider the expression evaluation, first (a= a^0x55)
a: 0xAA - 1010 1010
0x55 - 0101 0101
(a^0x55) - 1111 1111 = 0xFF
Now, second expression (a= a^0x55)
a: 0xFF - 1111 1111
0x55 - 0101 0101
(a^0x55) - 1010 1010 = 0x55
Thus, the output will be "AA".