
Дано целое неотрицательное число. Получить число, инвертируя его нечетные биты. Решить в паскале


Ответы на вопрос

Вот такая программа позволяет инвертировать нечётные биты во введённом 16-ти разрядном числе (тип word).
Если что, счёт битов я брал начиная с нуля. Поэтому, младший бит (нулевой) считается чётным. Если вдруг у вас там принято считать биты начиная с единицы, то младший будет нечётным, и тогда в строке где b := 2; надо поставить единицу вместо двух.
Также, я сделал отображение всех 16 разрядов введённого числа, и числа которое получилось после инверсии битов (то есть, число выводится в двоичном виде, начиная со старших разрядов). Это сделано для удобства проверки работы программы.
После проверки лучше удалить эти две строки (они выделены жирным шрифтом), ведь в задании не сказано выводить числа в двоичном виде.
var
a, b, n: word;
begin
write('Введите целое неотрицательное число: a= ');
readln(a);
b:=32768;for n:=15 downto 0 do begin write((a mod(b*2))div b);b:=b div 2;end;writeln();
b := 2;
for n := 0 to 7 do
begin
if (a mod (b * 2)) div b = 0
then a := a + b
else a := a - b;
b := b * 4;
end;
b:=32768;for n:=15 downto 0 do begin write((a mod(b*2))div b);b:=b div 2;end;writeln();
writeln('После инверсии нечётных битов: a= ', a);
end.






Для инвертирования нечетных битов в целом числе в языке программирования Pascal, вы можете использовать следующий код:
pascalprogram InvertOddBits; var num, result: Integer; mask: Integer; begin Write('Введите целое неотрицательное число: '); Readln(num); result := 0; mask := 1; while num > 0 do begin if (num and 1) = 1 then result := result or mask; num := num shr 1; mask := mask shl 1; end; Write('Число с инвертированными нечетными битами: ', result); end.
В этом коде мы сначала считываем целое неотрицательное число от пользователя. Затем мы создаем переменные result
и mask
. Маска будет использоваться для отслеживания текущего положения бита. Мы пройдемся по каждому биту числа, инвертируя биты с нечетными позициями и строим новое число result
. В конечном итоге, result
будет содержать число с инвертированными нечетными битами, и мы выводим его на экран.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili