Advertisement
StoilStoyanov

Exchanging Bits In Integer

Mar 12th, 2014
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. using System;
  2.  
  3. // 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.
  4.  
  5. class ChangeBinaryValueWithFormula
  6. {
  7. static void Main()
  8. {
  9. long startNumber = 132435435;
  10. byte p = 3;
  11. byte q = 10;
  12. byte k = 2;
  13. long finalNumber = startNumber; // For convenience and easy problem check
  14. for (int i = k; i > 0; i--)
  15. {
  16. long bytePinPositionQ = startNumber & (1 << p); // Taking the value of byte p
  17. bytePinPositionQ = bytePinPositionQ << (q - p); // Moving the value of byte p to the position of byte q
  18. finalNumber = finalNumber & (~(1 << q)); // Making byte q = 0
  19. finalNumber = finalNumber | bytePinPositionQ; // Injecting byte p value in byte q
  20. long byteQinPositionP = startNumber & (1 << q); // Taking the value of byte q
  21. byteQinPositionP = byteQinPositionP >> (q - p); //Moving the value of byte q to the position of byte p
  22. finalNumber = finalNumber & (~(1 << p)); // Making byte p = 0
  23. finalNumber = finalNumber | byteQinPositionP; // Injecting byte q value in byte p
  24. p++;
  25. q++;
  26. }
  27. Console.WriteLine(Convert.ToString(startNumber, 2)); //Binnary expression
  28. Console.WriteLine(Convert.ToString(finalNumber, 2));
  29. }
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement