procedure bitForm(var data; bitCount:longword);data - анализируемый блок оперативной памяти
Биты должны выводиться группами по 8 штук через пробел, от старшего бита к младшему.
Если общее количество битов не кратно 8, то количество бит в последней группе будет меньше 8.
Для решения задачи рекомендуется использовать битовые операции.
Запрещается использовать
строки и строковые функции, битовые структуры (битовые массивы, побитно упакованные записи и т.п.).
Пример программы, использующей данную процедуру:
var x:word; begin x:=$04FE; bitform(x,15); end.
Результат работы программы:
11111110 0000010
procedure bitSet(var data; bitNumber:longword); procedure bitReset(var data; bitNumber:longword);data - блок оперативной памяти
Нумерация битов - от младшего к старшему.
Для решения задачи рекомендуется использовать битовые операции.
Запрещается использовать
строки и строковые функции, битовые структуры (битовые массивы, побитно упакованные записи и т.п.).
{$mode objfpc}
type TBitArray=bitpacked array[0..high(longword)-1]of 0..1;
procedure bitForm(var data; bitCount:longword);
var x:TBitArray absolute data;
i,index:longint;
begin
for i:=0 to bitcount-1 do begin
index:=(7-(i mod 8))+8*(i div 8);
write(x[index]);
if ((i+1) mod 8)=0 then write(' ');
end;
writeln;
end;
procedure bitSet(var data; bitNumber:longword);
var x:TBitArray absolute data;
begin
x[bitNumber]:=1;
end;
procedure bitReset(var data; bitNumber:longword);
var x:TBitArray absolute data;
begin
x[bitNumber]:=0;
end;
var x:word;
begin
x:=$04FE;
bitform(x,15);
bitSet(x,0);
bitform(x,16);
bitReset(x,7);
bitform(x,16);
bitSet(x,14);
bitform(x,16);
end.
Результат запуска программы:
11111110 0000010 11111111 00000100 01111111 00000100 01111111 01000100