Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class UintegerPBitsWithQBitsExchange
- {
- static void Main()
- {
- //Write a program that exchanges bits {p, p+1, …, p+k-1) with bits {q, q+1, …, q+k-1} of given 32-bit unsigned integer.
- Console.Write("Enter a positive integer number:");
- uint numberToModify = uint.Parse(Console.ReadLine());
- Console.Write("Enter the starting position to exchange:");
- byte p = byte.Parse(Console.ReadLine());
- Console.Write("Enter the destination position for the exchange:");
- byte q = byte.Parse(Console.ReadLine());
- Console.Write("Enter the number of the positions to be exchanged (0-31):");
- byte k = byte.Parse(Console.ReadLine());
- uint bitP, bitQ, bufferNumber;
- uint modifiedNumber = numberToModify;
- for (byte i = 0; i < k; i++)
- {
- bitP = (numberToModify & (1u << p)) >> p; //Get bit p value
- bitQ = (numberToModify & (1u << q)) >> q; //Get bit q value
- bufferNumber = (modifiedNumber & (~(1u << p)) & (~(1u << q))); //Take the number and make the p and q positions Zero
- modifiedNumber = (bufferNumber | (bitP << q) | (bitQ << p)); //Exchange the bits in the number
- p++;
- q++;
- }
- Console.WriteLine("The entered number is {0}", Convert.ToString(numberToModify, 2).PadLeft(32, '0'));
- Console.WriteLine("The new number with exchanged bits is {0}", Convert.ToString(modifiedNumber, 2).PadLeft(32, '0'));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement