Циклический битовый сдвиг - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, уважаемые товарищи кодеры. Проблема у меня такая: Написать программу, которая позволит ввести два числа n и k типа ulong с клавиатуры, напечатать их на дисплее, используя битовые операции сделать в числе n циклическую перестановку бит, кратных 2 на k*2 бит вправо, вывести результат. Всё бы хорошо, но я не до конца понимаю реализацию сего вопроса(извечная проблема с битовыми операциями). Точнее, сколько не старался, всё время, как мне кажется, что-то упускал. В общем, уверен только в следующем, самом элементарном:
ulong n, n1, x1;
            int k;
            Console.WriteLine("Введите значение n, затем  k: ");
            n = ulong.Parse(Console.ReadLine());
            k = int.Parse(Console.ReadLine());
            Console.WriteLine("n = {0}, k= {1}", n, k);
            n1 = n & 0x5555555555555555; //выделяем каждый второй бит
А вот дальше, увы, я глуп... буду весьма благодарен, за подробное объяснение.

Решение задачи: «Циклический битовый сдвиг»

textual
Листинг программы
static void Main(string[] args)
        {
            
            Console.WriteLine("Введите значение n, затем  k: ");
            ulong n = ulong.Parse(Console.ReadLine());
            int k = int.Parse(Console.ReadLine());
          
            ulong n1 = n & 0x5555555555555555;
            n = n & 0x2aaaaaaaaaaaaaaa;
 
            for (int i = 0; i < k; i++)
            {
 
                if ((n1% 2) != 0)
                {
                    n1 = n1 / 4;
                    n1 = n1 | 0x4000000000000000;
                }
                else
                {
                    n1 = n1 / 4;
                }
            }
 
            n = n | n1;
 
            Console.WriteLine(n);
 
            Console.ReadLine();
 
        }

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы