Advertisement
sylviapsh

Uinteger P Bits With Q Bits Exchange

Dec 28th, 2012
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.40 KB | None | 0 0
  1. using System;
  2. class UintegerPBitsWithQBitsExchange
  3. {
  4.   static void Main()
  5.   {
  6.     //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.
  7.  
  8.     Console.Write("Enter a positive integer number:");
  9.     uint numberToModify = uint.Parse(Console.ReadLine());
  10.     Console.Write("Enter the starting position to exchange:");
  11.     byte p = byte.Parse(Console.ReadLine());
  12.     Console.Write("Enter the destination position for the exchange:");
  13.     byte q = byte.Parse(Console.ReadLine());
  14.     Console.Write("Enter the number of the positions to be exchanged (0-31):");
  15.     byte k = byte.Parse(Console.ReadLine());
  16.     uint bitP, bitQ, bufferNumber;
  17.     uint modifiedNumber = numberToModify;
  18.  
  19.     for (byte i = 0; i < k; i++)
  20.     {
  21.       bitP = (numberToModify & (1u << p)) >> p; //Get bit p value
  22.       bitQ = (numberToModify & (1u << q)) >> q; //Get bit q value
  23.       bufferNumber = (modifiedNumber & (~(1u << p)) & (~(1u << q))); //Take the number and make the p and q positions Zero
  24.       modifiedNumber = (bufferNumber | (bitP << q) | (bitQ << p)); //Exchange the bits in the number
  25.       p++;
  26.       q++;
  27.     }
  28.     Console.WriteLine("The entered number is {0}", Convert.ToString(numberToModify, 2).PadLeft(32, '0'));
  29.     Console.WriteLine("The new number with exchanged bits is {0}", Convert.ToString(modifiedNumber, 2).PadLeft(32, '0'));
  30.   }
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement