Tuesday, October 28, 2014

C bitwise program



Count the Number of Bits set to One using Bitwise Operations

#include 
#include 
int main()
{
    unsigned int number;
    int count = 0;
    clrscr();
    printf("Enter the unsigned integer:\n");
    scanf("%d", &number);
    while (number != 0)
    {
        if ((number & 1) == 1)
            count++;
        number = number >> 1;
    }
    printf("number of one's are :\n%d\n", count);
    return 0;
    getch();
}
 
 
Output
 
Enter the unsigned integer:
128
number of one's are :
1
 
Enter the unsigned integer:
-127
number of one's are :
26

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);
}

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;
    }
     getch();
}
 
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

Check if a given Bit Position is set to One or not

#include 
#include 
void main()
{
    unsigned int number;
    int result, position;
    clrscr()l;
    printf("Enter the unsigned integer:\n");
    scanf("%d", &number);
    printf("enter position to be searched\n");
    scanf("%d", &position);
    result = (number >> (position));
    if (result & 1)
        printf("TRUE\n");
    else
        printf("FALSE\n");  
     getch();  
}

Output

            Enter the unsigned integer:
128
Enter position to be searched
7
True

Count the Number of Bits set to one using Bitwise Operations

#include 
#include 
int main()
{
    unsigned int number;
    int count = 0;
    clrscr();
    printf("Enter the unsigned integer:\n");
    scanf("%d", &number);
    while (number != 0)
    {
        if ((number & 1) == 1)
            count++;
        number = number >> 1;
    }
    printf("Number of one's are :\n%d\n", count);
    return 0; 
    getch();
}

Output
 
Enter the unsigned integer:
128
Number of one's are :
1
 
Enter the unsigned integer:
-127
Number of one's are:
26

No comments:

Post a Comment