Reverse all the Bits of
an 32 bit Integer using Bitwise
#include
#include
#define num_bits_int sizeof(int)*8
void main()
{
unsigned int number;
int i = 0, hexadecimal, rev = 0, bit;
clrscr();
printf("Enter the hexdecimal value\n");
scanf("0x%number", &hexadecimal);
while (i++ < num_bits_int)
{
bit = hexadecimal & 1;
hexadecimal = hexadecimal >> 1;
rev = rev ^ bit;
if (i < num_bits_int)
rev = rev << 1;
}
printf("reverse of hexadecimal value is 0x%number", rev); getch();
}
Output
Enter the hexdecimal value
0x01234567
Reverse of hexadecimal value is 0xe6a2c480
Check if a given Integer
is a Power of 2 without using Bitwise
#include
#include
int power_of_2(unsigned int);
int b[32] = {0}, j = 0, n, i, count = 0;
void main()
{
unsigned int num;
clrscr();
printf("enter value\n");
scanf("%d", &num);
power_of_2(num);
if (count == 1)
printf("Yes\n");
else
printf("No\n");
}
int power_of_2(unsigned int num)
{
while (num != 0)
{
n = num % 2;
if (n == 1)
count++;
num = num / 2;
}
}
Output
Enter value
128
Yes
Enter value
126
No
Perform Binary Addition
of Strings and Print it
#include
#include
#include
char s1[10], s2[10], s3[10];
int i, k;
char carry = '0';
void binary_add(char *,char *);
void main()
{
printf("enter string1\n");
scanf(" %[^\n]s", s1);
printf("Enter string2\n");
scanf(" %[^\n]s", s2);
binary_add(s1, s2);
printf("Binary addition of number is\n");
if (carry == '1')
{
s3[i] = '1';
for (i = 1;i <= k + 1;i++)
printf("%c", s3[i]);
printf("\n");
}
else
{
for (i = 1;i <= k + 1;i++)
printf("%c", s3[i]);
printf("\n");
}
}
void binary_add(char *s1, char *s2)
{
char *p1, *p2;
p1 = s1;
p2 = s2;
k = strlen(s1);
for (;*p1 != '\0' && *p2 != '\0';p1++, p2++);
p1--;
p2--;
s3[k+1] = '\0';
for (i = k + 1;i >= 1;i--, p1--, p2--)
{
if (*p1 == '0' && *p2 == '0'&& carry == '0')
{
s3[i] = (*p1 ^ *p2) ^ carry;
carry = '0';
}
else if (*p1 == '0' && *p2 == '0' && carry == '1')
{
s3[i] = (*p1 ^ *p2)^ carry;
carry = '0';
}
else if (*p1 == '0' && *p2 == '1' && carry == '0')
{
s3[i] = (*p1 ^ *p2)^ carry;
carry = '0';
}
else if (*p1 == '0' && *p2 == '1' && carry == '1')
{
s3[i] = (*p1 ^ *p2)^ carry;
carry = '1';
}
else if (*p1 == '1' && *p2 == '0' && carry == '0')
{
s3[i] = (*p1 ^ *p2)^ carry;
carry = '0';
}
else if (*p1 == '1' && *p2 == '0' && carry == '1')
{
s3[i] = (*p1 ^ *p2)^ carry;
carry = '1';
}
else if (*p1 == '1' && *p2 == '1' && carry == '0')
{
s3[i] = (*p1 ^ *p2)^ carry;
carry = '1';
}
else
{
s3[i] = (*p1 ^ *p2)^ carry;
carry = '1';
}
}
getch();
}
Output
Enter string1
00010001
Enter string2
00010010
Binary addition of number is
000100011
Reverse all the Bits of an 32-bit
Integer using Bitwise
#include
#include
#define num_bits_int sizeof(int)*8
void main()
{
unsigned int number;
int i = 0, hexadecimal, rev = 0, bit;
printf("Enter the hexdecimal value\n");
scanf("0x%number", &hexadecimal);
while (i++ < num_bits_int)
{
bit = hexadecimal & 1;
hexadecimal = hexadecimal >> 1;
rev = rev ^ bit;
if (i < num_bits_int)
rev = rev << 1;
}
printf("Reverse of hexadecimal value is 0x%number", rev);
getch();
}
Output
Enter the hexdecimal value
0x01234567
Reverse of hexadecimal value is 0xe6a2c4800
No comments:
Post a Comment