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