Advertisement
Guest User

BitExchange

a guest
Mar 27th, 2014
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.61 KB | None | 0 0
  1. using System;
  2.  
  3. namespace _16_BitExchangeAdvanced
  4. {
  5.     class BitExchangeAdvanced
  6.     {
  7.         static void Main()
  8.         {
  9.             uint num = 1140867093;
  10.             byte p = 3;
  11.             byte q = 24;
  12.             byte k = 3;
  13.  
  14.             if (Math.Max(p,q)+k>32 || Math.Min(p,q)<0)
  15.             {
  16.                 Console.WriteLine("out of range");
  17.                 return;
  18.             }
  19.  
  20.             if (Math.Abs(q-p)<k)
  21.             {
  22.                 Console.WriteLine("overlapping");
  23.                 return;
  24.             }
  25.  
  26.             for (byte i = 0; i < k; i++)
  27.             {
  28.                 num = BitExchange(num, p+i, q+i);
  29.             }
  30.  
  31.             Console.WriteLine("The new value is {0}", num);
  32.  
  33.         }
  34.  
  35.         static uint BitExchange(uint num, int p, int q)
  36.         {
  37.             uint shiftNumP = num >> p;
  38.             byte bitP = (byte)(shiftNumP & 1);
  39.             uint shiftNumQ = num >> q;
  40.             byte bitQ = (byte)(shiftNumQ & 1);
  41.  
  42.             //change bit P
  43.             if (bitP == 0)
  44.             {
  45.                 uint maskP =(uint) ~(1 << q);
  46.                 num = num & maskP;
  47.             }
  48.             else
  49.             {
  50.                 uint maskP = (uint) (1 << q);
  51.                 num = num | maskP;
  52.             }
  53.  
  54.             //change bit Q
  55.             if (bitQ == 0)
  56.             {
  57.                 uint maskQ = (uint) ~(1 << p);
  58.                 num = num & maskQ;
  59.             }
  60.             else
  61.             {
  62.                 uint maskQ = (uint) 1 << p;
  63.                 num = num | maskQ;
  64.             }
  65.  
  66.             return num;
  67.         }
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement