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.
- class ChangeBinaryValueWithFormula
- {
- static void Main()
- {
- long startNumber = 132435435;
- byte p = 3;
- byte q = 10;
- byte k = 2;
- long finalNumber = startNumber; // For convenience and easy problem check
- for (int i = k; i > 0; i--)
- {
- long bytePinPositionQ = startNumber & (1 << p); // Taking the value of byte p
- bytePinPositionQ = bytePinPositionQ << (q - p); // Moving the value of byte p to the position of byte q
- finalNumber = finalNumber & (~(1 << q)); // Making byte q = 0
- finalNumber = finalNumber | bytePinPositionQ; // Injecting byte p value in byte q
- long byteQinPositionP = startNumber & (1 << q); // Taking the value of byte q
- byteQinPositionP = byteQinPositionP >> (q - p); //Moving the value of byte q to the position of byte p
- finalNumber = finalNumber & (~(1 << p)); // Making byte p = 0
- finalNumber = finalNumber | byteQinPositionP; // Injecting byte q value in byte p
- p++;
- q++;
- }
- Console.WriteLine(Convert.ToString(startNumber, 2)); //Binnary expression
- Console.WriteLine(Convert.ToString(finalNumber, 2));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement