Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Операция сдвига   Найти похожие ветки 

 
impuls   (2006-12-25 05:14) [0]

Подскажите как в Delphi сделать операцию сдвига (ассемблерные ROL ROP).
Или как решить след задачу есть переменная типа integer или byte, информацию несет не сама переменная а каждий ее бит (как биты в регистре статуса), т.е. нужно сделать из переменной типа byte переменную типа  bit, или пусть даже как то вытащить биты поразрядно в  переменной типа byte


 
ors_archangel ©   (2006-12-25 05:27) [1]

Установлен ли бит?

function GetBit(flags: cardinal; bit: integer): integer;
begin
 result := (flags shr bit) and 1;
end;

Установить бит!

procedure SetBit(var flags: cardinal; bit: integer);
begin
 flags := flags or (1 shl bit);
end;

Сбросить бит!

procedure ClearBit(var flags: cardinal; bit: integer);
begin
 flags := flags and not (1 shl bit);
end;

Здесь bit - это номер бита 0..31, GetBit возвращает 0 или 1. Использованы здесь побитовые операторы: shr (сдвиг вправо), shl (влево), or (побитное или), and (и) и not (не), например 1 shl 1 = 2, 2 shr 1 = 1, 2 or 1 = 3, 3 and 2 = 2, not 0 = 1 shl 31 - 1 (для integerа)


 
MBo ©   (2006-12-25 06:55) [2]

function Ror(Value, Shift: Integer): Integer;
begin
 Result := (Value shr Shift) or (Value shl (32  - Shift))
end;


 
Sha ©   (2006-12-25 09:50) [3]

> ors_archangel ©   (25.12.06 05:27) [1]
> ... not 0 = 1 shl 31 - 1 (äëÿ integerà)


Попробуй это :)

 i:=0;
 ShowMessage(IntToStr(not i));
 i:=1;
 i:=i shl 31 - 1;
 ShowMessage(IntToStr(i));


 
Loginov Dmitry ©   (2006-12-25 14:51) [4]

Множество различных побитовых операций:
http://fundementals.sourceforge.net/



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
15-1166856820
Оззя
2006-12-23 09:53
2007.01.14
К тов. Подгорецкому на сайт попасть


3-1161844347
Alexey123
2006-10-26 10:32
2007.01.14
Скроллинги в DBGrid


15-1166785789
VitV
2006-12-22 14:09
2007.01.14
Существуют ли официальные библиотеки .Нет по линукс?


15-1166977326
Yegorchic
2006-12-24 19:22
2007.01.14
При включении ADSL модема сигнал в трубке затихает


2-1166769426
Игорь М.
2006-12-22 09:37
2007.01.14
Локальная сеть