Advertisement
Fundamentalen

BitsExchangeAdvanced

Mar 17th, 2014
998
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.55 KB | None | 0 0
  1. using System;
  2.  
  3. class BitsExchangeAdvanced
  4. {
  5.     static void Main()
  6.     {
  7.         Console.Write("n = ");
  8.         long n = long.Parse(Console.ReadLine());
  9.         Console.Write("p = ");
  10.         int p = int.Parse(Console.ReadLine());
  11.         Console.Write("q = ");
  12.         int q = int.Parse(Console.ReadLine());
  13.         Console.Write("k = ");
  14.         int k = int.Parse(Console.ReadLine());
  15.  
  16.         Console.WriteLine(Convert.ToString(n, 2).PadLeft(32, '0'));
  17.  
  18.         if (p + k >= 32)
  19.         {
  20.             Console.WriteLine("Out of range");
  21.         }
  22.         else if (p < q && ((p + q) < k))
  23.         {
  24.             Console.WriteLine("Overlapping");
  25.         }
  26.         else
  27.         {
  28.             for (int i = 0; i < k; i++)
  29.             {
  30.                 int maskOne = (int)(n & (1 << p)) >> p;
  31.                 int maskTwo = (int)(n & (1 << q)) >> q;
  32.  
  33.                 //mask one
  34.                 if (maskOne == 0)
  35.                 {
  36.                     n = n & (~(1 << q));
  37.                 }
  38.                 else if (maskOne == 1)
  39.                 {
  40.                     n = n | (1 << q);
  41.                 }
  42.  
  43.                 //mask two
  44.                 if (maskTwo == 0)
  45.                 {
  46.                     n = n & (~(1 << p));
  47.                 }
  48.                 else if (maskTwo == 1)
  49.                 {
  50.                     n = n | (1 << p);
  51.                 }
  52.  
  53.                 p++;
  54.                 q++;
  55.             }
  56.  
  57.             Console.WriteLine(Convert.ToString(n, 2).PadLeft(32, '0'));
  58.             Console.WriteLine(n);
  59.         }
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement