Advertisement
adriyanbulgary

OperatorsExpressionsAndStatements - Task 16

Jun 13th, 2014
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.48 KB | None | 0 0
  1. using System;
  2. /*
  3.  * Write a program that exchanges bits {p, p+1, …, p+k-1} with bits {q, q+1, …, q+k-1}
  4.  * of a given 32-bit unsigned integer. The first and the second sequence of bits may not overlap
  5.  */
  6. class BitExchange
  7. {
  8.     static void Main()
  9.     {
  10.         Console.Write("Enter an uint number\n n = ");
  11.         uint number = uint.Parse(Console.ReadLine());
  12.         Console.Write("p = ");
  13.         int p = int.Parse(Console.ReadLine());
  14.         Console.Write("q = ");
  15.         int q = int.Parse(Console.ReadLine());
  16.         if (p > q)
  17.         {
  18.             int max = q;
  19.             q = p;
  20.             p = max;
  21.         }
  22.         Console.Write("k = ");
  23.         int k = int.Parse(Console.ReadLine());
  24.         if (q >= 32 || q < 1)
  25.         {
  26.             Console.WriteLine("overlapping");
  27.             return;
  28.         }
  29.         int limit = p + k - 1, binaryP = 0, binaryQ = 0, i = 0;
  30.         while (p <= limit)
  31.         {
  32.             binaryP += 1 << p;
  33.             p++;
  34.             binaryQ += 1 << q;
  35.             q++;
  36.             i++;
  37.         }
  38.         q -= i;
  39.         p -= i;
  40.         Console.WriteLine("binary representation of n = {0}",Convert.ToString(number,2).PadLeft(32,'0'));
  41.         number = (uint)(number & ~(binaryP | binaryQ) | ((number & binaryP) << q - p) | ((number & binaryQ) >> q - p));
  42.         Console.WriteLine("binary result \t\t   = {0}",Convert.ToString(number,2).PadLeft(32,'0'));
  43.         Console.WriteLine(number);
  44.         Console.Read();
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement