Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Вычисления



Вернуться к списку функций
 Извлечение из числа нужного количества бит, начиная с определённой позиции

 Прислал: Прахожий ( 23 февраля 2008 г. )
©  http://kladovka.net.ru/delphibase/?action=viewfunc&topic=mathcalc&id=10714
 Описание:
Данная функция работает следующим образом :
предположим есть число 381. его битовая маска 101111101
и предположим из этой маски нужно выделить 3 бита, начиная с 3-го (т.е. 111)
это производится так : BitsToNum(381,3,3).

Основано на http://kladovka.net.ru/delphibase/?action=viewfunc&topic=mathcalc&id=10714

 Зависимости:
нет

 Ограничения:
Проверено на D3, D4 и Win2k/XP/98/95

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Извлечение из числа нужного количества бит, начиная с определённой позиции

Данная функция работает следующим образом :
предположим есть число 381. его битовая маска 101111101
и предположим из этой маски нужно выделить 3 бита, начиная с 3-го (т.е. 111)
это производится так : BitsToNum(381,3,3).

Основано на http://kladovka.net.ru/delphibase/?action=viewfunc&topic=mathcalc&id=10714

Зависимости: нет
Автор:       Прахожий
Copyright:   http://kladovka.net.ru/delphibase/?action=viewfunc&topic=mathcalc&id=10714
Дата:        23 февраля 2008 г.
***************************************************************** }

function BitsToNum(source:integer; frombit:integer; CountBit:integer):integer;
const bitArray:ARRAY[0..31] of DWORD
  = (
     $0,
     $1,$3,$7,$F,
     $1F,$3F,$7F,$FF,
     $1FF,$3FF,$7FF,$FFF,
     $1FFF,$3FFF,$7FFF,
     $FFFF,$1FFFF,$3FFFF,$7FFFF,$FFFFF,
     $1FFFFF,$3FFFFF,$7FFFFF,$FFFFFF,
     $1FFFFFF,$3FFFFFF,$7FFFFFF,$FFFFFFF,
     $1FFFFFFF,$3FFFFFFF,$7FFFFFFF
                                  );
begin
  result:=(bitArray[CountBit]) and (source shr (frombit-1));
end;

 Пример использования:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin

  caption:=IntToStr(BitsToNum(381,2,3)); // 381 = 1 0111 1101 ; три бита, начиная со второго = 110

  for i:=1 to 10 do
  begin
    ListBox1.Items.add(IntToStr(BitsToNum(381,i,1)));
  end;

end;


Вернуться к списку функций

Наверх ▲    

http://www.domtrav.com/ лекарственные и лечебные грибы.
Ремонт ноутбуков в воронеже сервисный центр мармакс воронеж.
Набор разъемов micro usb pit-jey.com.
В Ильичевск из Киева. Авиабилеты в Ильичевск yastrub-tour.com.ua.