Advertisement
ntodorova

14.ExchangeBitsMore

Oct 17th, 2012
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.33 KB | None | 0 0
  1. using System;
  2.  
  3. class ExchangingBitsMore
  4. {
  5.     static void Main()
  6.     {
  7.         Console.WriteLine("Please enter a number: ");
  8.         int n = int.Parse(Console.ReadLine());
  9.  
  10.         Console.WriteLine("Please enter p position: ");
  11.         int p = int.Parse(Console.ReadLine());
  12.  
  13.         Console.WriteLine("Please enter q position: ");
  14.         int q = int.Parse(Console.ReadLine());
  15.  
  16.         Console.WriteLine("Please enter the size of the groups: ");
  17.         int k = int.Parse(Console.ReadLine());
  18.  
  19.         Console.WriteLine("Initial number is:");
  20.         Console.WriteLine(Convert.ToString(n, 2).PadLeft(32, '0'));
  21.  
  22.         int newNumber = n;
  23.         int bitP;
  24.         int bitQ;
  25.  
  26.         for (int i = 0; i < k; i++)
  27.         {
  28.             bitP = (newNumber & (1 << p)) >> p; // Get the bit on position p
  29.             bitQ = (newNumber & (1 << q)) >> q; // Get the bit on position q
  30.  
  31.             if (bitP != bitQ)
  32.             {
  33.                 if (bitP == 1 && bitQ == 0)
  34.                 {
  35.                     newNumber = newNumber & (~(1 << p));
  36.                     newNumber = newNumber | (1 << q);
  37.                 }
  38.                 else
  39.                 {
  40.                     newNumber = newNumber & (~(1 << q));
  41.                     newNumber = newNumber | (1 << p);
  42.                 }
  43.             }
  44.  
  45.             p++;
  46.             q++;
  47.         }
  48.  
  49.         Console.WriteLine("After exchange the number is:");
  50.         Console.WriteLine(Convert.ToString(newNumber, 2).PadLeft(32, '0'));
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement