Advertisement
Guest User

Problem 16 Bits Exchange 2

a guest
Mar 16th, 2014
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.15 KB | None | 0 0
  1. using System;
  2.  
  3. class BitsExchange2
  4. {
  5.     static void Main()
  6.     {
  7.         Console.WriteLine("Enter number");
  8.         ulong number = ulong.Parse(Console.ReadLine());
  9.         Console.WriteLine("Enter p");
  10.         int p = int.Parse(Console.ReadLine());
  11.         Console.WriteLine("Enter q");
  12.         int q = int.Parse(Console.ReadLine());
  13.         Console.WriteLine("Enter k");
  14.         int k = int.Parse(Console.ReadLine());
  15.         uint maskNumber = 0;
  16.         if (Math.Max(p, q) + k > 32)
  17.         {
  18.             Console.WriteLine("out of range");
  19.         }
  20.         else if (Math.Min(p, q) + k > Math.Max(p, q))
  21.         {
  22.             Console.WriteLine("overlapping");
  23.         }
  24.         else
  25.         {
  26.             for (int i = 0; i < k; i++)
  27.             {
  28.                 maskNumber += (uint)Math.Pow(2, i);
  29.             }
  30.  
  31.             uint mask = ((maskNumber << p) | (maskNumber << q));
  32.             uint firstBitGroup = (uint)((number >> p) & maskNumber);
  33.             uint secondBitGroup = (uint)((number >> q) & maskNumber);
  34.             Console.WriteLine((number & (~mask)) | ((firstBitGroup << q) | (secondBitGroup << p)));
  35.         }
  36.     }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement