Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сфера 
:(
    Опции темы
Chingachguk
Дата 11.11.2002, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 18



Цитата

Dexter Дата сообщения: 11.11.2002,15:07
Блин, как все сложно с этим асмом


Да ладно ;)

Вот вопрос на засыпку:

typedef unsigned char byte;
typedef unsigned long u32;
...

u32 x;
byte key[4] = {0x01,0x02,0x03,0x04}

...
x = key[0]  << 24 | key[1]  << 16 | key[2]  << 8 | key[3];

А теперь вопрос: что будет в результате в x ? ;)


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Dexter
Дата 11.11.2002, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Че-то я нихрена не понял:

typedef unsigned char byte;
typedef unsigned long u32;

Это че-то из C++ (наверно) (я сним не в таких ладах чтобы понять это)

u32 x;
byte key[4] = {0x01,0x02,0x03,0x04}

первая строка незнаю че делает, вторая походу массив (наверно)

x = key[0]  << 24 | key[1]  << 16 | key[2]  << 8 | key[3];

Это я ваще не знаю че такое.


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
neutrino
Дата 12.11.2002, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Цитата(Chingachguk @ 11.11.2002, 12:20)
Вот вопрос на засыпку:

typedef unsigned char byte;
typedef unsigned long u32;
...

u32 x;
byte key[4] = {0x01,0x02,0x03,0x04}

...
x = key[0]  << 24 | key[1]  << 16 | key[2]  << 8 | key[3];

А теперь вопрос: что будет в результате в x ? ;)

Да, я тоже сначала пытался это "прочитать". А там этих строк ой-ой-ой!!! Не разобрать.
Дело в том, что << имеет больший приоритет чем |. А |, в свою очередь, берет то что справа сначала!!! Чтобы эту строку анализировать надо запустить рекурсивный алгоритм :).
В конце получится 772 (честно говоря, я проверил, но посмотрел и код).
Для особо заинтересованных: скомпилируйте это и  через td откройте файл.
2Chingachguk: Так как дела с прогой?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Chingachguk
Дата 12.11.2002, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 18



> neutrino Дата сообщения: 11.11.2002,16:39
> Да, я тоже сначала пытался это "прочитать". А там этих строк ой-ой-ой!!!
> Не разобрать.

Не, написано как раз все понятно.

> Дело в том, что << имеет больший приоритет чем |. А |, в свою очередь,
> берет то что справа сначала!!! Чтобы эту строку анализировать надо
> запустить рекурсивный алгоритм .

Я не смотрел особо, какой-такой приоритет, я от смысла шел. А по смыслу должно быть 0x01020304.

> В конце получится 772 (честно говоря, я проверил, но посмотрел и код).

Вот видишь ! Ты чем компилил ? Я - bc.310. В ассемблерном листинге было видно, что код ОТРЕЗАЕТ старшие два байта результата промежуточных вычислений: генерит что-то вроде:

 shl ax,24 // !!! ???

Даже если делать в явном виде указание:

 (u32)key[0]<<24, то код(ассемблерный) меняется, но этого ... недостаточно !!!

> Для особо заинтересованных: скомпилируйте это и  через td откройте файл.

А самое смешное в этом СИ то, что все это в VC(винды)... работает ! А все потому, что там 32 разряда. Вообще специалист по СИ(работает рядом со мной) говорит, что скорее ВЕРНО РАБОТАЕТ именно bc - те не работает... Потому, как по правилам (?) результат должен приводиться (если явно не указано) к наименьшему типу !

> 2Chingachguk: Так как дела с прогой?

Пока особо никак ;( Работа почему-то мешает ;)


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Kesh
Дата 13.11.2002, 04:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: нет
Всего: 54



Нашел по F1 в Делфи... :0) Или я не понял вопроса...

Draws the ellipse defined by a bounding rectangle on the canvas.

procedure Ellipse(X1, Y1, X2, Y2: Integer); overload;
procedure Ellipse(const Rect: TRect); overload;

Description

Call Ellipse to draw a circle or ellipse on the canvas. Specify the bounding rectangle either by giving

The top left point at pixel coordinates (X1, Y1) and the bottom right point at (X2, Y2).
A TRect value.

If the bounding rectangle is a square, a circle is drawn.

The ellipse is outlined using the value of Pen, and filled using the value of Brush.

Note: On Windows 95, the sums X1 + X2 and Y1 + Y2 cannot exceed 32768. Also, the sum X1 + X2 + Y1 + Y2 cannot exceed 32768.


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Dexter
Дата 13.11.2002, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Не, вопрос был немного не в этом. Эти процедуры я знаю я спросил как они работают, т.е. как в принципе рисуется эллипс (да еще так быстро).


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
MuToGeN
Дата 13.11.2002, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



насколько я понял тот алгоритм без тригонометрии, то
Код
int i,j,x,y;
int radius=радиус;
int xCenter=центр по X;
int yCenter=центр по Y;
for(i=xCenter-radius;i<xCenter+radius;i++)
 for(j=yCenter-radius;j<yCenter+radius;j++)
 {
   x=i-xCenter;
   y=j-yCenter;
   if(abs(x*x+y*y-radius*radius)<0.1)
     Canvas.Pixels[i][j]=clBlack;
 }
типа того?

еще такой вопрос появился - как нарисовать эллипс, вытянутый (сжатый) не парралельно осям, а например по прямой y=x?


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Chingachguk
Дата 14.11.2002, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 18



Цитата

MuToGeN Дата сообщения: 13.11.2002,15:11
{...}
типа того?


Ага ;)

Цитата

еще такой вопрос появился - как нарисовать эллипс, вытянутый (сжатый) не парралельно осям, а например по прямой y=x?


В смысле - повернутый на угол относительно осей ? Подумаю об этом ;)


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
MuToGeN
Дата 14.11.2002, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Цитата(Chingachguk @ 13.11.2002, 17:23)
В смысле - повернутый на угол относительно осей ?

во-во :) вопрос не принципиальный, просто интересно


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
neutrino
Дата 14.11.2002, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



А нельзя использовать формулы поворота с тригонометрией?
2Chingachguk: А прогу я компилил сначала на VС а потом на ВС. Что-то я наглючился так, что потом на екзамене по SQL писал всякие сдвиги таблиц :)


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
MuToGeN
Дата 14.11.2002, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Цитата(neutrino @ 13.11.2002, 18:38)
А нельзя использовать формулы поворота с тригонометрией?

IMHO с целочисленными матрицами оно как-то не так будет


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Dexter
Дата 14.11.2002, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



2 исходника которые давал MuToGeN работают, но в первом чем больше радиус тем дальше точки друг от друга, во втором он мне рисует вообще точек 10.


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
MuToGeN
Дата 14.11.2002, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Цитата(Dexter @ 14.11.2002, 15:12)
в первом чем больше радиус тем дальше точки друг от друга, во втором он мне рисует вообще точек 10.

в первом тебе надо уменьшить шаг в цикле, во втором - в строке
Код
if(abs(x*x+y*y-radius*radius)<0.1)
0.1 заменяешь на нечто более убедительное, например, на 5 или 10 или 15 (чем больше, тем шире будет линия). 0.1 делать было вообще тупо (вина моя), т.к. x, y и радиус целочисленные и дробям там взяться вообще неоткуда.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Chingachguk
Дата 17.11.2002, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 18



Цитата

neutrino Дата сообщения: 13.11.2002,18:38
А нельзя использовать формулы поворота с тригонометрией?
2Chingachguk: А прогу я компилил сначала на VС а потом на ВС. Что-то я наглючился так, что потом на екзамене по SQL писал всякие сдвиги таблиц  


Как говорят китайцы, дорога в тысячу миль начинается с 1 шага ;)))

Там есть прикольный барьер, не знаю, налетел ли ты на него ...


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.