wingman007

BasicsExamShuffleBits

Dec 12th, 2015
414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.41 KB | None | 0 0
  1. using System;
  2.  
  3.  
  4. class ShuffleBits
  5. {
  6.     static void Main()
  7.     {
  8.         uint firstNumber = uint.Parse(Console.ReadLine());  // 123; // 321; // uint.Parse(Console.ReadLine());
  9.         uint secondNumber = uint.Parse(Console.ReadLine()); // 321; // 123; // uint.Parse(Console.ReadLine());
  10.         ulong result = 0;
  11.         // Console.WriteLine(Convert.ToString(firstNumber, 2).PadLeft(32, '0'));
  12.         // Console.WriteLine(Convert.ToString(secondNumber, 2).PadLeft(32, '0'));
  13.  
  14.         if (firstNumber >= secondNumber)
  15.         {
  16.             for (int i = 31; i >= 0; i--)
  17.             {
  18.                 result = (result << 1) | ((firstNumber >> i) & 1);
  19.                 result = (result << 1) | ((secondNumber >> i) & 1);
  20.             }
  21.         }
  22.         else
  23.         {
  24.             for (int i = 31; i >= 0; i -=2 )
  25.             {
  26.                 // 1. solution
  27.                 result = (result << 2) | ((firstNumber >> i - 1) & 3);
  28.                 result = (result << 2) | ((secondNumber >> i - 1) & 3);
  29.  
  30.                 // 2. solution. this also works
  31.                 //result = (result << 1) | ((firstNumber >> i) & 1);
  32.                 //result = (result << 1) | ((firstNumber >> i - 1) & 1);
  33.                 //result = (result << 1) | ((secondNumber >> i) & 1);
  34.                 //result = (result << 1) | ((secondNumber >> i - 1) & 1);
  35.             }
  36.         }
  37.  
  38.         Console.WriteLine(result);
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment