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


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

Поиск по базе



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

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

Вычисления



Вернуться к списку функций
 Установка определенного бита в слове

 Прислал: Григорий Ситнин (Москва) ( 8 июля 2003 г. )
©  Григорий Ситнин, 2003
 Описание:
Возвращает AWord с установленным битом номер ABit (c 0 по 15) в значение 1, если AState = TRUE или 0, если AState = FALSE.

Стоит заметить, что в функцию передается именно номер бита, а не маска. Проверка на правильный номер не производится.

 Зависимости:
System

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Установка определенного бита в слове

Возвращает AWord с установленным битом номер ABit (c 0 по 15) в значение 1, если AState = TRUE или 0, если AState = FALSE.

Стоит заметить, что в функцию передается именно номер бита, а не маска. Проверка на правильный номер не производится.

Зависимости: System
Автор:       Григорий Ситнин, gregor@gregor.ru, Москва
Copyright:   Григорий Ситнин, 2003
Дата:        8 июля 2003 г.
***************************************************************** }

function SetBit(AWord: word; ABit: byte; AState: boolean = true): word;
begin
  if AState then
    Result := AWord or (1 shl ABit) else
    Result := AWord and (not(1 shl ABit));
end;

 Пример использования:
{$APPTYPE CONSOLE}
program test;
uses Bits; // В модуле Bits описана функция SetBit
var z: word;
    i: integer;
    s: string;
begin
  z := 0;
  z := setbit(z,0); // 0000000000000001
  z := setbit(z,2); // 0000000000000101
  z := setbit(z,9); // 0000001000000101
  z := setbit(z,14); // 0100001000000101
  z := setbit(z,15); // 1100001000000101
  s := '';
  for i := 15 downto 0 do
    s := s + inttostr(Ord(CheckBit(z,i)));
  writeln('value: ',z, ' dec = 1100001000000101');
  writeln('result: ',s);
  z := $FFFF;
  z := setbit(z,0,false); // 1111111111111110
  z := setbit(z,2,false); // 1111111111111010
  z := setbit(z,9,false); // 1111110111111010
  z := setbit(z,14,false); // 1011110111111010
  z := setbit(z,15,false); // 0011110111111010
  s := '';
  for i := 15 downto 0 do
    s := s + inttostr(Ord(CheckBit(z,i)));
  writeln('value: ',z, ' dec = 0011110111111010');
  writeln('result: ',s);
end.


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

Наверх ▲