Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- /*
- * Write a program that exchanges bits {p, p+1, …, p+k-1} with bits {q, q+1, …, q+k-1}
- * of a given 32-bit unsigned integer. The first and the second sequence of bits may not overlap
- */
- class BitExchange
- {
- static void Main()
- {
- Console.Write("Enter an uint number\n n = ");
- uint number = uint.Parse(Console.ReadLine());
- Console.Write("p = ");
- int p = int.Parse(Console.ReadLine());
- Console.Write("q = ");
- int q = int.Parse(Console.ReadLine());
- if (p > q)
- {
- int max = q;
- q = p;
- p = max;
- }
- Console.Write("k = ");
- int k = int.Parse(Console.ReadLine());
- if (q >= 32 || q < 1)
- {
- Console.WriteLine("overlapping");
- return;
- }
- int limit = p + k - 1, binaryP = 0, binaryQ = 0, i = 0;
- while (p <= limit)
- {
- binaryP += 1 << p;
- p++;
- binaryQ += 1 << q;
- q++;
- i++;
- }
- q -= i;
- p -= i;
- Console.WriteLine("binary representation of n = {0}",Convert.ToString(number,2).PadLeft(32,'0'));
- number = (uint)(number & ~(binaryP | binaryQ) | ((number & binaryP) << q - p) | ((number & binaryQ) >> q - p));
- Console.WriteLine("binary result \t\t = {0}",Convert.ToString(number,2).PadLeft(32,'0'));
- Console.WriteLine(number);
- Console.Read();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement