Search This Blog

Sunday, October 5, 2014

WAP to display all set bit position in a given 32-bits number

1:  main()  
2:  {  
3:    int i = 0x1234,pos = 1;  
4:    while(i)  
5:    {  
6:      if ( i & 0x01)  
7:      {  
8:        printf("%d\n",pos);  
9:      }  
10:      i = i>>1;  
11:      pos++;  
12:    }  
13:  }   

WAP to shift all one's at one side in a given 32-bits number. i.e num = 0xcccccccc o/p - 0xffff0000

1:  main()  
2:  {  
3:    unsigned int num = 0xcccccccc;  
4:    unsigned int res = 0,b1= 0,count=0;  
5:    printf("Num : 0x%x\n",num);  
6:    while(num)  
7:    {  
8:      if(num & 1)  
9:      {  
10:        b1 = (b1 << 1) | 1;  
11:        count++;  
12:      }  
13:      num >>= 1;   
14:    }  
15:    num = b1 << count;  
16:    printf("Result : 0x%x\n",num);  
17:  }   

WAP to swap adjacent bits in a given 32-bits number

1:  main()  
2:  {  
3:    int num;  
4:    printf("Enter No:");  
5:    scanf("%d",&num);  
6:    printf("rev = %d\n",(num>>1 & 0x55555555 | num<<1 & 0xaaaaaaaa));  
7:  }  

WAP to find number of set bits in a given 32-bits number

1:  main()  
2:  {  
3:    int num = 0x1fa12cde,count = 0;  
4:    while(num)  
5:    {  
6:      if(num & 1)  
7:      {  
8:        count++;  
9:      }  
10:      num = num >>1;  
11:    }  
12:    printf("Number of set bits = %d\n",count);  
13:  }  

WAP to swap two nibbles in a given number

1:  main()  
2:  {  
3:    unsigned int num = 0xfc;  
4:    num = (num>>4 & 0x0f) | (num<<4 & 0xf0);  
5:    printf("Result = 0x%x\n",num);  
6:  }   

WAP to toggle all bits in a given 32-bits number

1:  main()  
2:  {  
3:    unsigned int num = 0x4532fc1a; // Any 32-bits integer  
4:    unsigned int inv = i ^ 0xffffffff;  
5:    printf("inv = %x\n",inv);  
6:  }   

WAP to overlap the bits from one number to another given number if the overlapping bit position is given

1:  main()  
2:  {  
3:    int num1 = 0xffffffff;  
4:    int num2 = 0x12345678,c = 0;  
5:    int p1=0,p2=0;  
6:    int mask = 0;  
7:    // Enter the overlapping bits position  
8:    printf("Enter first overlapping bit position:");  
9:    scanf("%d",&p1);  
10:    printf("Enter second overlapping bit position:");  
11:    scanf("%d",&p2);  
12:    mask |= (1 << p1-1);  
13:    mask |= (1 << p2-1);  
14:    c = num2 & mask;  
15:    num1 |= c;  
16:    printf("After overlapping = %d\n",num1);  
17:  }