Текущий архив: 2007.10.14;
Скачать: CL | DM;
Вниз
Работа с байтом и битами Найти похожие ветки
← →
stanislav © (2007-09-18 16:55) [0]Получаю от устройства 1 байт данных, представленный в формате Integer. т.е. значение от 0 до 255, этим значением прибор информирует какие из 8 контактов замкнуты т.е. приняли значение 1.
Мне нужно узнать допустим замкнут ли контакт под номером 5, для этого я преобразовую число в строку вида "11101111", и потом с помощю строковых функций(COPY) получаю 0 либо 1.
Есть ли проще способ это определить?
← →
DVM © (2007-09-18 16:57) [1]
> Есть ли проще способ это определить?
AND OR SHL SHR и прочие битовые операции
← →
Сергей М. © (2007-09-18 16:58) [2]
> D7
> Integer. т.е. значение от 0 до 255
Читаем справку:
Generic integer types for 32-bit implementations of Delphi
Type Range Format
Integer -2147483648..2147483647 signed 32-bit
Cardinal 0..4294967295 unsigned 32-bit
← →
Германн © (2007-09-18 16:59) [3]
> Работа с байтом и битами
http://podgoretsky.com/ftp/Docs/Delphi/Podgoretsky/bits.html
← →
DVM © (2007-09-18 17:01) [4]на пальцах:
procedure TForm1.Button2Click(Sender: TObject);
var
n: integer;
begin
n := 239; //11101111
if (n and 16{10000}) <> 0 then windows.Beep(500,50); // не пищит
n := 255; //11111111
if (n and 16{10000}) <> 0 then windows.Beep(500,50); // пищит!
end;
← →
Сергей М. © (2007-09-18 17:02) [5]
> Есть ли проще способ это определить?
>
Есть. И не один. И не только проще, но и наглядней и эффективней.
см. множества (sets) в Делфи.
← →
stanislav © (2007-09-18 17:05) [6]Спасибо, читаю.
← →
stanislav © (2007-09-18 17:14) [7]Все, понял. А вот как бы теперь это на MSSQL написать?
← →
Shirson © (2007-09-18 17:38) [8]Вы входящие с прибора на MSSQL хотите обрабатывать? О, мсье понимает толк в извращениях! :)
← →
sniknik © (2007-09-18 19:48) [9]тем не менее в MSSQL есть битовые операции... целесообразности в их использовании чаще всего нет, а операции есть...
после [3] читать BOL...
← →
Anatoly Podgoretsky © (2007-09-18 20:16) [10]> sniknik (18.09.2007 19:48:09) [9]
Чего только нет в этом королевстве.
Очень богатое королевство.
← →
stanislav © (2007-09-19 10:06) [11]Shirson © (18.09.07 17:38) [8]
Данные собирает сервер и пишет в базу, и в задачи сервера входит только записать целое число в базу. А результаты обрабатываются aspx страницей.
Чтобы не выполнять кучу запросов к базе проще битовые операции выполнить силами MSSQL.
← →
stanislav © (2007-09-19 10:06) [12]sniknik © (18.09.07 19:48) [9]
Спасибо почитаю.
← →
sniknik © (2007-09-19 11:00) [13]stanislav © (19.09.07 10:06) [11]
ну возможно в данном случае и есть целесообразность... сразу бы объяснил для чего нужно не было бы [8] (а то могло с этого все на треп скатится).
> Спасибо почитаю.
поточнее см. раздел bitwise operators и связанное (по ссылкам внизу).
← →
stanislav © (2007-09-19 11:06) [14]sniknik © (19.09.07 11:00) [13]
спасибо прочитал все понял. подошло. (Русский BOL по MSSQL рулит :-).)
Я думал это делается процедурами/функциями, хотел посмотреть и по возможности реализовать на MSSQL, оказалось все проще :-).
← →
Anatoly Podgoretsky © (2007-09-19 11:10) [15]Может стоить использовать тип bit
Страницы: 1 вся ветка
Текущий архив: 2007.10.14;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.029 c