Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Problem 16. ** Bit Exchange (Advanced)
- //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.
- using System;
- class BitExchangeAdvanced
- {
- static void Main()
- {
- Console.Write("Please,enter number:");
- uint number = uint.Parse(Console.ReadLine());
- Console.Write("Please, enter p:");
- int p = int.Parse(Console.ReadLine());
- Console.Write("Please, enter q:");
- int q = int.Parse(Console.ReadLine());
- Console.Write("Please, enter k:");
- int k = int.Parse(Console.ReadLine());
- Console.WriteLine(Convert.ToString(number, 2).PadLeft(32, '0'));
- // Turning the number in bin system
- uint[] numInBin = new uint[32];
- for (int i = 0; i < numInBin.Length; i++)
- {
- if (number == 0)
- {
- break;
- }
- numInBin[i] = number % 2;
- number = number / 2;
- }
- // Printing the list
- for (int i = 0; i < numInBin.Length; i++)
- {
- Console.Write(numInBin[i]);
- }
- Console.WriteLine();
- //Making the changes
- for (int i = 0; i < k; i++)
- {
- uint temp = 0;
- temp = numInBin[p];
- numInBin[p] = numInBin[q];
- numInBin[q] = temp;
- p++;
- q++;
- }
- // Print the edited list
- Array.Reverse(numInBin);
- for (int i = 0; i < numInBin.Length; i++)
- {
- Console.Write(numInBin[i]);
- }
- Console.WriteLine();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement