Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace _16_BitExchangeAdvanced
- {
- class BitExchangeAdvanced
- {
- static void Main()
- {
- uint num = 1140867093;
- byte p = 3;
- byte q = 24;
- byte k = 3;
- if (Math.Max(p,q)+k>32 || Math.Min(p,q)<0)
- {
- Console.WriteLine("out of range");
- return;
- }
- if (Math.Abs(q-p)<k)
- {
- Console.WriteLine("overlapping");
- return;
- }
- for (byte i = 0; i < k; i++)
- {
- num = BitExchange(num, p+i, q+i);
- }
- Console.WriteLine("The new value is {0}", num);
- }
- static uint BitExchange(uint num, int p, int q)
- {
- uint shiftNumP = num >> p;
- byte bitP = (byte)(shiftNumP & 1);
- uint shiftNumQ = num >> q;
- byte bitQ = (byte)(shiftNumQ & 1);
- //change bit P
- if (bitP == 0)
- {
- uint maskP =(uint) ~(1 << q);
- num = num & maskP;
- }
- else
- {
- uint maskP = (uint) (1 << q);
- num = num | maskP;
- }
- //change bit Q
- if (bitQ == 0)
- {
- uint maskQ = (uint) ~(1 << p);
- num = num & maskQ;
- }
- else
- {
- uint maskQ = (uint) 1 << p;
- num = num | maskQ;
- }
- return num;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement