Для целого числа заменить все его биты с k1 по k2 на те же элементы в обратном порядке - PascalABC.NET

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

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

Для данного целого числа заменить все его биты с k1 по k2 на те же элементы в обратном порядке. т.е дано какое то двоичное число и указав номер двух битов нужно поменять местами биты входящие в этот интервал. для десятичного числа это сделать могу, но как сделать для двоичного не совсем понимаю вот код для десятичного числа

Решение задачи: «Для целого числа заменить все его биты с k1 по k2 на те же элементы в обратном порядке»

textual
Листинг программы
var
  n, k1, k2, b1, b2: LongInt;
 
begin
  readln(n, k1, k2); { n - исходное число, k1 - начало интервала(включительно),
      k2 - конец интервала(включительно). Индексы начинаются с нуля. }
  
  while(k1 < k2) do begin
    b1 := (1 shl k1) and n; //бит на позиции k1
    b2 := (1 shl k2) and n; //бит на позиции k2
    
    if(b1 = 0) 
      then n := n and (not(1 shl k2))
      else n := n or (1 shl k2);
    if(b2 = 0) 
      then n := n and (not(1 shl k1))
      else n := n or (1 shl k1);
    
    k1 := k1 + 1;
    k2 := k2 - 1;
  end;
  
  writeln(n);
end.

Объяснение кода листинга программы

В этом коде выполняется замена всех битов числа в заданном интервале на те же биты в обратном порядке.

  1. Сначала программа запрашивает у пользователя целое число и два целых числа, которые задают интервал.
  2. Затем, пока k1 меньше k2, программа берет биты числа на позициях k1 и k2, используя сдвиг и побитовую операцию AND.
  3. Если бит на позиции k1 равен 0, то программа заменяет этот бит на 1, иначе на 0.
  4. Если бит на позиции k2 равен 0, то программа заменяет этот бит на 1, иначе на 0.
  5. Затем программа увеличивает k1 на 1 и уменьшает k2 на 1.
  6. После завершения цикла программа выводит полученное число.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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