Главная страница
    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.052 c
1-1153733070
Mintos
2006-07-24 13:24
2006.09.10
OleContainer и Exel


15-1155918518
Ketmar
2006-08-18 20:28
2006.09.10
DMClient -- диверсант.


1-1153919069
DK2006
2006-07-26 17:04
2006.09.10
Clipboard


15-1155213009
Ламот
2006-08-10 16:30
2006.09.10
Ограничение прав доступа... и не только!


15-1155569479
IronHawk
2006-08-14 19:31
2006.09.10
Мораль!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский