Вопрос задан 24.06.2023 в 02:11. Предмет Информатика. Спрашивает Мухин Кирилл.

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

0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Нефеденкова Наталья.

Вот такая программа позволяет инвертировать нечётные биты во введённом 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.




0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

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

pascal
program 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 будет содержать число с инвертированными нечетными битами, и мы выводим его на экран.

0 0

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос