Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Вниз

and, or   Найти похожие ветки 

 
Хочу знать   (2006-08-16 15:18) [0]

Здраствуйте. Подскажите что делает выделенная строка.
Часто встречается такое, непойму для чего.
......
function GetData(Data: Integer): Integer;
begin
 Data:=(Data and 7);  //Вот, что это
 result:=GetGlobalData(Data);
end;
end;


в процедуру GetData передается значение Data  в диапазоне 0..7
?????????????????????????????????????????????????????????????????


 
Хочу знать   (2006-08-16 15:19) [1]

В теме написал еще и or, потому что, и с ним иногда встречается чтонибудь.


 
McSimm ©   (2006-08-16 15:21) [2]

http://www.delphikingdom.ru/lyceum/seminar.asp?ID=1


 
Джо ©   (2006-08-16 15:22) [3]

> Data:=(Data and 7);

Data and 7 с учетом того, что "значение Data  в диапазоне 0..7" операция бессмысленная. Ибо всегда равна значению Data.


 
McSimm ©   (2006-08-16 15:25) [4]


> Data and 7 с учетом того, что "значение Data  в диапазоне
> 0..7" операция бессмысленная.


Смыслом может быть защита функции от неожидаемых входных параметров.


 
Zeqfreed ©   (2006-08-16 15:29) [5]

McSimm прав, я думаю, выбираются только младшие три бита.


 
Джо ©   (2006-08-16 15:31) [6]

> Смыслом может быть защита функции от неожидаемых входных
> параметров.

Очень даже может быть.


 
McSimm ©   (2006-08-16 15:33) [7]


> Zeqfreed ©   (16.08.06 15:29) [5]

Джо тоже прав. С точки зрения двоичной арифметики операция действительно бессмысленная. Я лишь высказал предположение скорее из области стиля программирования.


 
Хочу знать   (2006-08-16 16:46) [8]


> McSimm ©   (16.08.06 15:21) [2]

Спасибо. Почитаем.
Спасибо всем за ответы.


 
TUser ©   (2006-08-16 16:53) [9]

> Смыслом может быть защита функции от неожидаемых входных параметров.

При неожиданных входных параметрах такая "защита" приведет к неожиданному результату. Защита - это raise, имхо.


 
Anatoly Podgoretsky ©   (2006-08-16 19:50) [10]

Это точно, это не защита, а диверсия.


 
Ketmar ©   (2006-08-16 22:01) [11]

> [9] TUser ©   (16.08.06 16:53)
лучше ASSERT(). %-)


 
Джо ©   (2006-08-16 22:04) [12]

> [11] Ketmar ©   (16.08.06 22:01)
> > [9] TUser ©   (16.08.06 16:53)
> лучше ASSERT(). %-)

А еще лучше: TMyType = 0..7;


 
Ketmar ©   (2006-08-16 22:14) [13]

> [12] Джо ©   (16.08.06 22:04)
а одно другому не мешает. не всегда можно обойтись только compile-time проверками.


 
Джо ©   (2006-08-16 22:20) [14]

> [13] Ketmar ©   (16.08.06 22:14)
> > [12] Джо ©   (16.08.06 22:04)
> а одно другому не мешает. не всегда можно обойтись только
> compile-time проверками.

Не всегда, конечно. Это я так, общие замечания :) Но, если данные "приходят извне" я бы сделал-таки отдельную процедуру их валидации с rais"ом, а не Assert"ом. Но это дело вкуса, разумеется.


 
Ketmar ©   (2006-08-16 22:23) [15]

> [14] Джо ©   (16.08.06 22:20)
скорее, архитектуры. %-) если допускается случай прихода "не того" -- то raise. если нет -- то это однозначно баг, и тогда ASSERT().
однако дискуссия пустая, имо... %-)


 
Ketmar ©   (2006-08-16 22:25) [16]

> [15] Ketmar ©   (16.08.06 22:23)
только надо отлавливать в коде try ... except end; и жестоко убивать вместе с аффтаром. %-)


 
Германн ©   (2006-08-17 00:44) [17]

Ну что вы развели тут такую бодягу?
В Data может быть "запаковано" весьма большое количество  информации! А в процедуру GetData передается значение Data  в диапазоне 0..7 т.е.только три младших бита. Если сия процедура должна только их и учитывать!


 
Джо ©   (2006-08-17 01:07) [18]

> [17] Германн ©   (17.08.06 00:44)
> В Data может быть "запаковано" весьма большое количество
> информации!


Ну уж нет. Цитирую автора, пост [0]:

> в процедуру GetData передается значение Data  в диапазоне
> 0..7


 
Германн ©   (2006-08-17 01:43) [19]


> Ну уж нет. Цитирую автора, пост [0]:
>
> > в процедуру GetData передается значение Data  в диапазоне
> > 0..7

В таком случае ещё бОльшая бодяга! Ничего никто не потеряет! Но приведённый контекст, имхо, может означать, что в данную процедуру надо передать значения Data в диапазоне 0..7, чтобы не мешали другие, более старшие биты.



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

Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.042 c
2-1155793360
DelphiLexx
2006-08-17 09:42
2006.09.10
Добавить записи из одного TList в другой


15-1155927009
ronyn
2006-08-18 22:50
2006.09.10
Завершение работы Виндовс


15-1155352711
ФаФо
2006-08-12 07:18
2006.09.10
Дыра в Виндос - это Эксплорер?


9-1115392165
OSokin
2005-05-06 19:09
2006.09.10
А не устраивать ли нам небольшие конкурсы по кодингу? (ч.4)


3-1152217283
sholom
2006-07-07 00:21
2006.09.10
Это mysql не позволяет или комп?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский