Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class BitExchangeSecond
- {
- static void Main()
- {
- uint num = uint.Parse(Console.ReadLine());
- int p, q;
- int p1 = int.Parse(Console.ReadLine());
- int q1 = int.Parse(Console.ReadLine());
- int k = int.Parse(Console.ReadLine()); // number of bits to be exchanged
- uint digitP, digitQ, maskPRev, maskQRev;
- if ((Math.Max(p1, q1) + k > 32) || (Math.Min(p1, q1) < 0))
- {
- Console.WriteLine("Out of Range");
- }
- else if ((p1 < q1) & (p1 + k - 1 > q1) || (q1 < p1) & (q1 + k - 1 > p1))
- {
- Console.WriteLine("Overlapping");
- }
- else
- {
- for (int i = 0; i < k; i++)
- {
- p = p1 + i;
- q = q1 + i;
- digitP = num >> p & 1;
- digitQ = num >> q & 1;
- maskPRev = (uint)(~(1 << p));
- maskQRev = (uint)(~(1 << q));
- num = num & maskPRev & maskQRev;
- num = num | (digitP << q) | (digitQ << p);
- }
- Console.WriteLine(num);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement