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

Вниз

О битовой математике   Найти похожие ветки 

 
Джо ©   (2009-11-23 10:36) [80]

Мало того, к Калькуляторе даже кнопочки для извлечения корня нет. Объяснить почему? :D


 
brother ©   (2009-11-23 11:06) [81]

> Объяснить почему? :D

ага ;)


 
kyn66 ©   (2009-11-23 11:14) [82]


> Джо ©   (23.11.09 10:36) [80]
> Мало того, к Калькуляторе даже кнопочки для извлечения корня
> нет. Объяснить почему? :D

Ну давай объясни(умник). Тока сразу не забудь учесть, что в инженерном режиме нету, а в простом есть, однако . http://yurec66.narod.ru/Hlam/calc.jpg И уж за одно если не затруднит объясни, почему в справке извлечение корня и возведение в степень 2 закодировано под одной эквивалентной клавишей? И как понимать такую справку, изучая самостоятельно и не сбиться с пути истинного? ПУсть нам ответит начальник транспортного цеха.... >:(


 
Джо ©   (2009-11-23 11:29) [83]

Ну, очевиджно же, что инженер может разобраться в этом, а не-инженеру тяжело придется :D


 
Leonid Troyanovsky ©   (2009-11-23 11:30) [84]


> kyn66 ©   (23.11.09 11:14) [82]

> Ну давай объясни(умник). Тока сразу не забудь учесть, что
> в инженерном режиме нету, а в простом есть, однако .

Однажды Петрушевский сломал свои часы и послал за Пушкиным. Пушкин пришел, осмотрел часы Петрушевского и положил их обратно на стул. "Что скажешь, брат Пушкин?" - спросил Петрушевский. "Стоп машина", - сказал Пушкин.

--
Regards, LVT.


 
kyn66 ©   (2009-11-23 11:39) [85]


> Leonid Troyanovsky ©   (23.11.09 11:30) [84]

А еще мы в школе изучали творчество Александра Сергеевича Грибоедова. В частности его произведение "Горе от ума"....


 
Leonid Troyanovsky ©   (2009-11-23 11:46) [86]


> kyn66 ©   (23.11.09 11:39) [85]

Лермонтов любил собак. Еще он любил Наталью Николаевну Пушкину.
Только больше всего он любил самого Пушкина. Читал его стихи и всегда
плакал. Поплачет, а потом вытащит саблю и давай рубить подушки. Тут и
любимая собачка не попадайся под руку - штук десять так-то зарубил. А
Пушкин ни от каких не плакал. Ни за что.

--
Regards, LVT.


 
kyn66 ©   (2009-11-23 11:51) [87]

Модератеру - а что, мастера уже не могут входить в число спамеров и офтопщиков? Или это участь молодых? Я думаю порядок должен быть для всех одиноков.


 
Leonid Troyanovsky ©   (2009-11-23 11:53) [88]


> kyn66 ©   (23.11.09 11:51) [87]

Пушкин  любил кидаться  камнями.  Как
увидит  камни,  так  и  начнет ими кидаться.
Иногда так разойдется,  что стоит весь крас-
ный, руками машет,  камнями кидается, просто
ужас!

--
Regards, LVT.


 
Германн ©   (2009-11-24 02:14) [89]


> kyn66 ©   (23.11.09 11:51) [87]
>
> Модератеру - а что, мастера уже не могут входить в число
> спамеров и офтопщиков?

См. [71]


 
Дмитрий Белькевич   (2009-11-24 03:20) [90]

>А вот тыкнуть правым мышом на SHL, чтобы получить справку быструю по SHR - как то не догадался. Не каждый зрячий да увидит.

Вообще, интерфейс у калькулятора - говно. "Невидимость" контекстных меню - большой минус. Нужно дублировать. Смотрю, в d2010 продублировали всё контекстное с компонентами. Верный подход. Только благодаря дублированию увидел одну интересную фичу - hide/show non-visual. Другую же фичу (компиляцию пакетов) искал два дня... Еще на 2009-й. И таки эту менюху всё еще не продублировали. А некоторые до сих пор не знаю, что в 2009/2010 можно dpr смотреть и редактировать... Всё по тому же - засунуто в контекстное меню.


 
Наиль ©   (2009-11-24 13:19) [91]

> [48] kyn66 ©   (18.11.09 12:35)
> Спасибо за подсказку, но я думаю это будет лишним, т.к.
> тема уже раскрыта.

А вот и не раскрыта.
Можно вспомнить про множества
var
 WeekDaysMask: set of byte;
 WeekDaysInt: Integer absolute WeekDaysMask;
begin
 WeekDaysMask:=[0,2,4,6];
 Writeln(WeekDaysInt);
 for i := 0 to 6 do
   CheckBox[i].Checked := i in WeekDaysMask;
end;

А можно про класс для работы с битами TBits


 
kyn66 ©   (2009-11-24 13:50) [92]

Да, конечно, можно и множества. Это как дополнительный вариант, тоже интересный. Я его использую в самом начале старта программы, чтобы определить глобальную булеву переменную, задействовать ли механизм контроля в зависимости от текущего дня недели и указан ли он в параметрах программы.

 DaysSet := [];
 for i := 0 to 6 do
  if (WeekDaysMask and (1 shl i)) <> 0 then
   Include(DaysSet, i);
 d := IIF(DayOfWeek(Date) = 1, DayOfWeek(Date) + 5, DayOfWeek(Date) - 2);
 Proverka := d in DaysSet;

Ваще механизм битового хранения мне очень понравился. В одной переменной типа Integer(4 байта) можно хранить до 32 значений. Одно только плохо, что этот метод позволяет хранить параметры настроек по "флагам". Вот я и думаю, что целесообразнее... хранить таким способом или в качестве отдельного параметра в реестре(к примеру). Хотя для битового варианта нужно тоже заводить переменную конкретно для этой проверки.
Если вытащив из реестра булево значение я могу проверить просто

if BulParam1 then
begin
....
end;

то для проверки на включенность бита я должен использовать строку проверки намного длиннее

Const
 Provbit = $1
....
if WeekDaysMask and (1 shl Provbit) = Provbit then
begin

end;
....  


 
абизяна   (2009-11-24 14:43) [93]


> kyn66 ©


"Мартышка и очки".


 
Дмитрий Белькевич   (2009-11-24 18:34) [94]


> то для проверки на включенность бита я должен использовать
> строку проверки намного длиннееConst  Provbit = $1.... if
> WeekDaysMask and (1 shl Provbit) = Provbit then begin end;
>


Для этого люди давно придумали функции и классы. Делай класс, который будет читать/писать и проверять побитно поля - и будет тебе счастье.

function TestForBit(BitMask: DWord; BitPos: Integer):Boolean;
begin
Result := BitMask and (BitPos shl Provbit) = BitPos;
end;

или, еще проще:



function TStoreClass.TestForBit(BitPos: Integer):Boolean;
begin
Result := FBitMask and (BitPos shl Provbit) = BitPos;
end;

procedure TStoreClass.ReadBitMaskFromRegistry(const RegKey: string);
begin
FBitMask := ReadFromRegistry(RegKey);
end;



Ну а потом:


TStoreMyCoolBitClass = class (TStoreClass);
public
 function TestForMyFirstCoolBit: Boolean;
 function TestForMySecondCoolBit: Boolean;
 function TestForMyThirdCoolBit: Boolean;
 constructor Create(const RegKey: string);
end;


Ну и так далее... Можно еще и для инишки то же сделать, три строчки поменяв, и для xml"а и для базы - в общем-то носитель данных существенной роли не играет. Но... Обычно, как обычно, лень :)


 
kyn66 ©   (2009-11-24 20:02) [95]


> Дмитрий Белькевич   (24.11.09 18:34) [94]

Дмитрий, это все понятно. Все здесь представленные варианты позволяют оперировать с данными, полученными из хранилища. Написание функции и т.п. труда не составляет. Однако смысл вопроса [0] был как хранить несколько параметров одним числом(точнее это продолжение ранее обсуждаемойй темы). И тема для меня была раскрыта и понята. Именно побитовое установка флагов. А уж как работать с извлеченными из хранилища данными - вариантов много. Спасибо.

> абизяна   (24.11.09 14:43) [93]

Обычно когда пишешь пост, то  дополнительно представляться не нужно. Для этого есть ник, по которому и так все видно. :)))


 
kyn66 ©   (2009-11-24 20:11) [96]


>Дмитрий Белькевич   (24.11.09 18:34) [94]
>
> function TestForBit(BitMask: DWord; BitPos: Integer):Boolean;
> begin Result := BitMask and (BitPos shl Provbit) = BitPos;
> end;


Только здесь мне кажется не совсем верно. Должно быть так:

function TestForBit(BitMask: DWord; BitPos: Integer):Boolean;
begin
  Result := BitMask and (1 shl BitPos) = BitPos;
end;
...
CheckBox1.Checked := TestForBit(WeekDaysMask, Provbit);


 
Дмитрий Белькевич   (2009-11-24 23:24) [97]

>Должно быть так:

Да. Еще inline добавить до полного счастья...


 
kyn66 ©   (2009-11-24 23:45) [98]


> Дмитрий Белькевич   (24.11.09 23:24) [97]
>Да. Еще inline добавить до полного счастья.


А не жирно будет для такой мелочевки? :)
К тому же {$INLINE} Delphi7 не поддерживает.


 
Дмитрий Белькевич   (2009-11-25 00:10) [99]

>А не жирно будет для такой мелочевки? :)

Как раз для такой мелочевки - в сам раз, что бы производительность не терять на обвязке входом/выходом в функцию, состоящую из одной строки (и, скорее всего, 2-3 команд процессора).

>К тому же {$INLINE} Delphi7 не поддерживает.

Только не {$INLINE}, а

function TestForBit(BitMask: DWord; BitPos: Integer):Boolean; inline;

По поводу семёрки - смотри в сторону 2009/2010, если есть возможность и желание.


 
kyn66 ©   (2009-11-25 09:13) [100]


> Дмитрий Белькевич   (25.11.09 00:10) [99]
>Только не {$INLINE},а function TestForBit(BitMask: DWord; BitPos: Integer):
> Boolean; inline;

Да, конечно же, не хотел уже пост переписывать. Хотел просто акцентировать внимание на директиве.

>поводу семёрки - смотри в сторону 2009/2010, если есть возможность и >желание.

Да как то боязно. В том плане, что за годы накопился ряд приложений, использующих те или иные внешние компоненты(RX, Tms и др. Ну по поводу Rx, то слыхал вроде в 2010 она уже встроена). Где есть вероятность, что найду версию для 2009/2010 или их совместимость? В чем особое превосходство новой версии, чтобы кардинально переходить на нее?


 
Дмитрий Белькевич   (2009-11-25 15:00) [101]

>Да как то боязно.

Волков не стоит боятся ;) Основные компоненты или уже перенесены или могут быть перенесены достаточно быстро (если уж совсем какая-то экзотика). Rx"ы точно под 2009-ю видел, а то, что под 2009-й работает переносится почти безболезненно под 2010-ю, да уже наверно и под 2010-ю пересобрали. Я уже давно от Rx"ов отказался - она вошла в Jedi и там обновляется под новые версии среды, поэтому точное состояние дел с Rx"ами не знаю. Tms"ы не пользую.

>Где есть вероятность, что найду версию для 2009/2010 или их совместимость?

Можно параллельно поставить - они семёрке не мешают. И постепенно переносить компоненты и проекты.

>В чем особое превосходство новой версии, чтобы кардинально переходить на нее?

Осособое? 1. Юникод. 2. Более удобная среда. Вначале не понравился фулл-скрин, потом посмотрел, что в работе удобнее - почти все нужные окна уже под руками. 3. Рефакторинг. Помогает сырцы причёсывать. 4. Ну и так, всяких мелочей куча - типа того же inlin"а, более удобного редактора кода и прочих мелких и не очень доработок коих сотни.


 
kyn66 ©   (2009-11-25 15:29) [102]


> Можно параллельно поставить - они семёрке не мешают. И постепенно
> переносить компоненты и проекты.

Так будет безопаснее. Заодно и посмотреть что за вестч такая.... Я читал что якобы существенный минус - значительное увеличения ехе-шника. Не вопрос, посмотреть конечно интересно было бы. Тока я шота не видел пока ни у кого его на руках из своего круга. Может просто не интерисовался.... Нужно в ларьках "дисковых" глянуть. Кстати про inline тоже читанул. Он якобы не такой уж и безобидный. Есть свои прибабахи при его использовании. Ряд разных ограничений и т.д. http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1091#06-7


 
Anatoly Podgoretsky ©   (2009-11-25 16:08) [103]

> kyn66  (25.11.2009 15:29:42)  [102]

Размер ехе волнует только озабоченых.


 
Дмитрий Белькевич   (2009-11-26 01:12) [104]

>Он якобы не такой уж и безобидный.

Все подряд функции инлайнить, конечно, не стоит да и не получится. Но для всякой мелочи на 3-10 ассемблерных комманд, когда "разгон" при вызове функции длиннее самой функции  - то самое то. Будет и быстре и скорее всего компактнее.

>Я читал что якобы существенный минус - значительное увеличения ехе-шника.

В наше время глупо размером экзешников заморачиваться. Ну не сто же метров он, пустой, будет. Ну будет он на один мегабайт длиннее - то и фиг с ним. Вон - дотнетщики не грузятся 300 мб дотнета к инсталлерам пристёгивать.

Размер экзешника, кстати, можно частично редуцировать - в файле проекта прописать

{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])}

отключив новые RTTIшные фичи. У себя я поотключал везде - всё равно не пользую эти фичи и скорее всего не буду.


 
korneley ©   (2009-11-26 01:27) [105]


> Дмитрий Белькевич   (25.11.09 15:00) [101]
> >Да как то боязно.Волков не стоит боятся ;) Основные компоненты
> или уже перенесены или могут быть перенесены достаточно
> быстро

Ага... Был случай с переходом на Инди :) После ФастНета. Прям "Брильянтовую руку" вспомнил: "То же, но с перламутровыми пуговицами" :)) И всё только из-за того, что была установка: либо то, что в дистрибутиве Дельфи, либо открытые исходники.


 
Дмитрий Белькевич   (2009-11-26 03:59) [106]

Пользовать закрытые и заброшенные компоненты - это проблема архитектуры программы а не среды.


 
korneley ©   (2009-11-26 04:53) [107]


> Дмитрий Белькевич   (26.11.09 03:59) [106]
> Пользовать закрытые и заброшенные компоненты - это проблема
> архитектуры программы а не среды.

В четвертой (ИМХО не лучшей) версии были фастнет. Компоненты. :) В пятой тоже. Бац! Индейцы наступают. Да нет, там немного было, больше с 9-й на 10-е Инди переход нервов (и времени) занял. Но, опять же, что фастнет, что инди, это не "сторонние" компоненты, а очень даже родные. Ага, чую засаду: "А чего самому всё не забульбенить?" Дык, для чего тогда вся  идея? Это я про повторное испольование?


 
Дмитрий Белькевич   (2009-11-26 14:22) [108]

Фастнет не обязательно было использовать. Indy (восьмые) были уже для 4-й делфи.

Не знаю твою ситуацию, а у себя 9-ю инди мы как юзали в семёрке так и юзаем сейчас в 2010. Немного допилив под юникод.


> Но, опять же, что фастнет, что инди, это не "сторонние"
> компоненты, а очень даже родные.


А я про сторонние ничего и не говорил. Я говорил про закрытые. И то, что какие-то компоненты входят в Делфи вовсе не означает, что именно их и нужно использовать.

Посмотрел у себя на первой форме приложения - 519 компонент. Из них стандартных - несколько TTimer"ов, TOpenDialog, Action"ы собранные в ActionList, парочка IBQuery и одно TMemo (вчера буквально добавил, надеюсь в будущем тоже заменить). Всё остальное - стороннее и, само собой, с сырцами.


 
Inovet ©   (2009-11-26 15:43) [109]

> [47] Anatoly Podgoretsky ©   (18.11.09 11:58)
> > kyn66  (18.11.2009 11:43:46)  [46]
>
> Вот нас уже двое, кстати в твоем распоряжение ресурс еще
> на 53 сообщения.

А ресурс тем временем по доброте душевной был увеличен.:)


 
Anatoly Podgoretsky ©   (2009-11-26 16:16) [110]

> Inovet  (26.11.2009 15:43:49)  [109]

Сначала был выполнен долг, ресурс достигнут, а теперь уже сверх обязаностей.


 
Leonid Troyanovsky ©   (2009-11-26 22:57) [111]


> kyn66 ©   (25.11.09 15:29) [102]

Лето 1829 года Пушкин провел в деревне. Он вставал рано утром, выпивал жбан парного молока и бежал к реке купаться. Выкупавшись в реке, Пушкин ложился на траву и спал до обеда. После обеда Пушкин спал в гамаке. При встрече с вонючими мужиками Пушкин кивал им головой и зажимал пальцами свой нос. А вонючие мужики ломали свои шапки и говорили: «Это ничаво».

--
Regards, LVT.


 
Игорь Шевченко ©   (2009-11-26 23:50) [112]

Leonid Troyanovsky ©   (26.11.09 22:57) [111]

"Захотел Леннон с Джимом Моррисоном рознакомиться. Звонит ему в
Америку и говорит: "Приезжай ко мне в Еврору". А  Моррисон  ему
отвечает:  "Чего это я к тебе поеду? Лучше ты приезжай ко мне в
Америку". Обиделся Леннон, трубку бросил. Потом  думает:  "Чего
это  я на него обиделся? Сьезжу-ка к нему в Америку". И уехал в
Америку. А Моррисон думает: "Нехорошо я как-то Леннона  обидел.
Надо  сьездить к нему в Еврору". И уехал в Еврору. Так они и не
встретились."


 
Anatoly Podgoretsky ©   (2009-11-27 09:27) [113]

> Игорь Шевченко  (26.11.2009 23:50:52)  [112]

Два бита


 
kyn66 ©   (2009-11-27 09:35) [114]

Удалено модератором
Примечание: А полечим тебя, заодно и узнаем, кто из вас Идиот.


 
Leonid Troyanovsky ©   (2009-11-27 09:43) [115]


> kyn66 ©   (27.11.09 09:35) [114]

У Пушкина было четыре сына и все идиоты. Один не умел даже сидеть на
стуле и все время падал. Пушкин-то и сам довольно плохо сидел на стуле.
Бывало, сплошная умора: сидят они за столом; на одном конце Пушкин все
время со стула падает, а на другом конце - его сын.
Просто хоть святых вон выноси!

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2009-11-27 09:53) [116]


> Игорь Шевченко ©   (26.11.09 23:50) [112]

:)
Мне вот это понравилось:

Леннон всегда недолюбливал Стара, так как подозревал, что тот - еврей. Сидели они как-то на репетиции... Вдруг Леннон схватил бубен и как даст Стару по голове!
- За что-о-о-о-о-о? - заорал Стар.
- Бытовой антисемитизм, - объяснил Леннон.

--
Regards, LVT.


 
Andy BitOff ©   (2009-11-27 10:03) [117]


> Leonid Troyanovsky ©   (27.11.09 09:53) [116]

=)))
Бытовой =)))


 
Inovet ©   (2009-11-27 10:24) [118]

> [116] Leonid Troyanovsky ©   (27.11.09 09:53)
> Бытовой антисемитизм, - объяснил Леннон.

Битловой или битовый.:)


 
Inovet ©   (2009-11-27 10:40) [119]

> [112] Игорь Шевченко ©   (26.11.09 23:50)
> Так они и не встретились

Они ведь и действительно не встречались?


 
Юрий Зотов ©   (2009-11-27 18:09) [120]

Как-то, читая "Потрепаловку", Пушкин подумал: "Им что, делать нечего?".



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

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

Наверх




Память: 0.72 MB
Время: 0.016 c
2-1260359005
Xmen
2009-12-09 14:43
2010.01.31
Проверка компа.


15-1258913368
Alkid
2009-11-22 21:09
2010.01.31
А что это Каспер ругается на наш форум?


4-1224840675
Riply
2008-10-24 13:31
2010.01.31
Принцип работы CreateToolhelp32Snapshot


2-1260365833
Danco
2009-12-09 16:37
2010.01.31
Как получит письмо с почты?


15-1259262478
@!!ex
2009-11-26 22:07
2010.01.31
Что нужно чтобы купить доменное имя и назнаить ему iP?