Advertisement
MariaBencheva

Untitled

Nov 17th, 2014
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. using System;
  2. class BitExchangeSecond
  3. {
  4. static void Main()
  5. {
  6. uint num = uint.Parse(Console.ReadLine());
  7. int p, q;
  8. int p1 = int.Parse(Console.ReadLine());
  9. int q1 = int.Parse(Console.ReadLine());
  10. int k = int.Parse(Console.ReadLine()); // number of bits to be exchanged
  11. uint digitP, digitQ, maskPRev, maskQRev;
  12. if ((Math.Max(p1, q1) + k > 32) || (Math.Min(p1, q1) < 0))
  13. {
  14. Console.WriteLine("Out of Range");
  15. }
  16. else if ((p1 < q1) & (p1 + k - 1 > q1) || (q1 < p1) & (q1 + k - 1 > p1))
  17. {
  18. Console.WriteLine("Overlapping");
  19.  
  20. }
  21. else
  22. {
  23. for (int i = 0; i < k; i++)
  24. {
  25. p = p1 + i;
  26. q = q1 + i;
  27. digitP = num >> p & 1;
  28. digitQ = num >> q & 1;
  29. maskPRev = (uint)(~(1 << p));
  30. maskQRev = (uint)(~(1 << q));
  31. num = num & maskPRev & maskQRev;
  32. num = num | (digitP << q) | (digitQ << p);
  33.  
  34. }
  35. Console.WriteLine(num);
  36. }
  37. }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement