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

Вниз

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

 
Джо ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.7 MB
Время: 0.011 c
15-1259157679
картман
2009-11-25 17:01
2010.01.31
Неправильно форматируется файл проекта


2-1260272652
kate158
2009-12-08 14:44
2010.01.31
разделение строки на число и букву


6-1211916995
Darth Avenger
2008-05-27 23:36
2010.01.31
ServerSocket и ClientSocket - "склеивание" принятых строк


15-1259480148
@!!ex
2009-11-29 10:35
2010.01.31
Перехват добавления сайта в "избранное"


1-1234874517
Alex22
2009-02-17 15:41
2010.01.31
Скриншоты рабочего стола и окна приветствия





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