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

Вниз

установка/сброс бита   Найти похожие ветки 

 
F$   (2010-03-23 14:32) [0]


procedure TForm8.Button3Click(Sender: TObject);
var
 N: Integer;
 A: packed array [0..3] of Byte absolute N;
 Res: Integer absolute A;
begin
 N := 76;

 A[0] := A[0] or $80;
 A[0] := A[0] or $40;

 ShowMessage(BoolToStr(A[0] and $80 = $80) + #13#10 +
   BoolToStr(A[0] and $40 = $40));

 A[0] := A[0] and (-1 xor $40);
 A[0] := A[0] and (-1 xor $80);

 ShowMessage(BoolToStr(A[0] and $80 = $80) + #13#10 +
   BoolToStr(A[0] and $40 = $40));

Почему Res возвращает вместо 76 - 12? Что нет так? Ведь по сути установил бит/сбросил должно вернуть 76.

 ShowMessage(IntToStr(Res));
end;


 
MBo ©   (2010-03-23 14:44) [1]

шестой бит ($40 = 64) в числе 76 был установлен изначально, а в конце его ты безусловно сбросил


 
Anatoly Podgoretsky ©   (2010-03-23 14:56) [2]

> F$  (23.03.2010 14:32:00)  [0]

А где начальная инициализация A[0]


 
F$   (2010-03-23 14:57) [3]

подскажите как сделать нижеописанное, а то я совсем запутался с битами. Нужно для байта установить биты ($80,$40). Дальше записать изменненный байт в стрим. Далее считать байт со стрима и и проверить установки битов.


 
F$   (2010-03-23 15:01) [4]

в дополнение:

в итоге если 1 бит установлен выводим ShowMessage("$80") или ShowMessage("$40")
иначе ShowMessage("$80, $40").


> А где начальная инициализация A[0]


Дак вроде как, если задали N, то по сути проинициализировали A[0].


 
Anatoly Podgoretsky ©   (2010-03-23 15:11) [5]


> Дак вроде как, если задали N, то по сути проинициализировали
> A[0].

Ааааааа
Так у тебя цепочка absolute

Не надо использовать его вообще. Ведь есть же LongRec


 
Sha ©   (2010-03-23 15:13) [6]

> совсем запутался с битами.
> Нужно для байта установить биты ($80,$40)


var
 b: byte;
begin
 ....
 b:=b or $C0;
 ....
end;


> Дальше записать изменненный байт в стрим.
> Далее считать байт со стрима и и проверить установки битов.

Если со стримом тоже запутался, задай вопрос в другой ветке.



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

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

Наверх




Память: 0.48 MB
Время: 0.189 c
2-1271248525
De:Light
2010-04-14 16:35
2010.08.27
Загрузка и анализ


15-1267466564
М. Береговой
2010-03-01 21:02
2010.08.27
Что за полосы на дне Тихого Океана?


15-1272703696
Pavia
2010-05-01 12:48
2010.08.27
numerical recipes


15-1267771411
oxffff
2010-03-05 09:43
2010.08.27
Буду в Москве с 22.03 по 26.03. Был бы рад встрече.


15-1264282227
Юрий
2010-01-24 00:30
2010.08.27
С днем рождения ! 24 января 2010 воскресенье