syssboxx

ExchangeMultipleBits

May 30th, 2013
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.00 KB | None | 0 0
  1. //Write a program that exchanges bits {p, p+1, …, p+k-1) with bits {q, q+1, …, q+k-1} of given 32-bit unsigned integer.
  2.  
  3.  
  4. using System;
  5.  
  6. class ExchangeMultipleBitsOfInteger
  7. {
  8.     static void Main()
  9.     {
  10.         uint number;
  11.         uint resultNumber;
  12.  
  13.         int k;
  14.         int p;
  15.         int q;
  16.        
  17.         int[] numberArray = new int[32];
  18.                
  19.         Console.Write("Enter an integer number : ");
  20.         number = uint.Parse(Console.ReadLine());
  21.  
  22.         Console.Write("Enter a number of bits to change k : ");
  23.         k = int.Parse(Console.ReadLine());
  24.        
  25.         Console.Write("Enter a start position of first sequence p : ");
  26.         p = int.Parse(Console.ReadLine());
  27.  
  28.         Console.Write("Enter a start position of second sequence q : ");
  29.         q = int.Parse(Console.ReadLine());
  30.  
  31.         Console.WriteLine("Binar representation :{0}", Convert.ToString(number, 2).PadLeft(32, '0'));
  32.         resultNumber = number;
  33.  
  34.         //get bit value and add it to array's elements
  35.         for (int i = 0; i < 32; i++)
  36.         {
  37.             numberArray[i] = (int)((number & (1 << i)) >> i);
  38.         }
  39.  
  40.         //exchangenge bits (array elements) with XOR
  41.         for (int i = 0; i < k; i++)
  42.         {
  43.             numberArray[p + i] = numberArray[p + i] ^ numberArray[q + i];
  44.             numberArray[q + i] = numberArray[q + i] ^ numberArray[p + i];
  45.             numberArray[p + i] = numberArray[p + i] ^ numberArray[q + i];
  46.  
  47.         }
  48.  
  49.         //Compose new number from array of bits
  50.         for (int i = 0; i < 32; i++)
  51.         {
  52.             if (numberArray[i] == 0)
  53.             {
  54.                 resultNumber = (resultNumber & ~(uint)(1 << i)); //set the bit to 0
  55.             }
  56.             else
  57.             {
  58.                 resultNumber = (resultNumber | (uint)(1 << i)); //set the bit to 1
  59.             }
  60.         }
  61.  
  62.         Console.WriteLine("The modified number is {0} :{1}", resultNumber, Convert.ToString(resultNumber, 2).PadLeft(32, '0'));
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment