На языке программирования freepascal разработать процедуру вывода на экран битовой структуры оперативной памяти:
procedure bitForm(adr:pointer; bitCount:longword);adr - указатель на начало анализируемого блока оперативной памяти
Биты должны выводиться группами по 8 штук через пробел, от старшего бита к младшему.
Если общее количество битов не кратно 8, то количество бит в последней группе будет меньше 8.
Запрещается при создании процедуры использовать
битовые массивы.
Пример программы, использующей данную процедуру:
var x:word; begin x:=$04FE; bitform(@x,15); end.
Результат работы программы:
11111110 0000010
На языке программирования Си разработать функцию bitForm, аналогичную предыдущей. Проверить ее работоспособность.
void bitForm(unsigned char *adr, unsigned long bitCount);adr - указатель на начало анализируемого блока оперативной памяти
На языке программирования freepascal разработать процедуры установки и сброса единичного бита в оперативной памяти:
procedure bitSet(adr:pointer; bitNumber:longword); procedure bitReset(adr:pointer; bitNumber:longword);adr - указатель на начало блока оперативной памяти
Нумерация битов - от младшего к старшему.
Запрещается при создании процедуры использовать
битовые массивы
Пример программы, использующей данные процедуры:
var x:word; begin x:=$04FE; bitform(@x,15); bitset(@x,0); bitform(@x,15); bitreset(@x,1); bitform(@x,15); bitset(@x,9); bitform(@x,15); end.
Результат работы программы:
11111110 0000010 11111111 0000010 11111101 0000010 11111101 0000011
На языке программирования Си разработать функции bitSet и bitReset, аналогичные предыдущим. Проверить их работоспособность.
void bitSet(unsigned char *adr, unsigned long bitNumber); void bitReset(unsigned char *adr, unsigned long bitNumber);adr - указатель на начало блока оперативной памяти
{$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