iliya87

05.BitSwapper

Mar 28th, 2015
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.34 KB | None | 0 0
  1. using System;
  2.  
  3. class BitSwapper
  4. {
  5.     public static void Main()
  6.     {
  7.         uint[] numbers = new uint[4];
  8.         for (int i = 0; i < numbers.Length; i++)
  9.         {
  10.             numbers[i] = uint.Parse(Console.ReadLine());
  11.         }
  12.  
  13.         while (true)
  14.         {
  15.             string[] from = Console.ReadLine().Split(' ');
  16.             if (from[0] == "End")
  17.             {
  18.                 break;
  19.             }
  20.             string[] to = Console.ReadLine().Split(' ');
  21.  
  22.             int firstNumber = int.Parse(from[0]);
  23.             int secondNumber = int.Parse(to[0]);
  24.             int firstGroup = int.Parse(from[1]) * 4;
  25.             int secondGroup = int.Parse(to[1]) * 4;
  26.  
  27.             uint fromMask = 15u << firstGroup;
  28.             uint toMask = 15u << secondGroup;
  29.             uint fromByte = (numbers[firstNumber] & fromMask) >> firstGroup;
  30.             uint toByte = (numbers[secondNumber] & toMask) >> secondGroup;
  31.  
  32.             // zeroing the 2 groups that will be swaped
  33.             numbers[firstNumber] &= ~fromMask;
  34.             numbers[secondNumber] &= ~toMask;
  35.  
  36.             // swaping
  37.             numbers[firstNumber] |= toByte << firstGroup;
  38.             numbers[secondNumber] |= fromByte << secondGroup;
  39.         }
  40.  
  41.         foreach (var number in numbers)
  42.         {
  43.             Console.WriteLine(number);
  44.         }
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment