Сообщение от DJ Anarchist:
RJ Presto, смарты вряд ли, а вот под простые мобилы - да... в смартах все же есть поддержка карт памяти...
тока вот код при выполнении размещается в опреативной памяти [Ответ]
Dr.PC 18:51 17.09.2007
Сообщение от The_God:
то неправильное решение:
Цитата:
Сообщение от Dr.PC
на всяких попсовых языках это делается так:
a:= a+b;
b:= b-a;
a:=a+b;
b:=-b;
для целочисленных переменных может возникнуть переполнение при математических вычислениях.
для целочисленных переменных нужно использовать xor:
Цитата:
Сообщение от =
СтепаныЧ[=]a := a xor b;
b := a xor b;
a := a xor b;
Да ты чё? А я не тоже самое написал в том же посте, который ты процитировал?
Сообщение от RJ Presto:
при кодинге под смартфоны - легко
я ору.. уже сто лет как такие ситуации даже при кодинге под самые замухрыжные контроллеры не возникают. А уж в смартфоне или телефоне, где уже давно и окна, и игры и всякие прибамбасы не суметь ВРЕМЕННО выделить пару байт для одной операции надо суметь.
[Ответ]
Dr.PC 18:55 17.09.2007
Сообщение от RJ Presto:
тока вот код при выполнении размещается в опреативной памяти
ага, причём не только данные, но и команды. посчитаем, сколько места ПОСТОЯННО занимает код по переброске двух переменных и сколько места ВРЕМЕННО (на одну операцию всего лишь) сэкономится?
Эффект может быть только в контроллерах с раздельной памятью команд и оперативкой, но он такой мизерный, что это даже смешно.
[Ответ]
RJ Presto 19:08 17.09.2007
Сообщение от Dr.PC:
ага, причём не только данные, но и команды. посчитаем, сколько места ПОСТОЯННО занимает код по переброске двух переменных и сколько места ВРЕМЕННО (на одну операцию всего лишь) сэкономится?
Эффект может быть только в контроллерах с раздельной памятью команд и оперативкой, но он такой мизерный, что это даже смешно.
почему же тогда бывают ситуации, когда даже на указатель памяти не хватает?
[Ответ]
Dr.PC 19:20 17.09.2007
Сообщение от RJ Presto:
почему же тогда бывают ситуации, когда даже на указатель памяти не хватает?
ужс... Не потому ли, что не тот телефон для программы выбрали?
[Ответ]
The_God 19:48 17.09.2007
Сообщение от Dr.PC:
А я не тоже самое написал в том же посте, который ты процитировал?
не тоже самое зависит от платформы, может работать, а может и нет.
зы. учи матчасть
ps уточню что я говорю про с++, в нём эти два куска кода не эквивалентны обмену через третью переменную, тут все зависит от того какие числа мы меняем местами, хор подойдет для целых и дробных чисел ( и то если их физически привести к целым, а потом обратно ),
а математические манипуляции с целыми числами могут дать в результате переполнение, результат которого будет зависеть от типа процессора на котором этот код потом будет выполняться,
например если так переставлять местами значения в ММХ регистрах то получится совсем не то что хочется т.к. там есть не только циклическое переполнение в котором данный способ прокатил-бы, но и переполнение насыщением, это когда результат если не помещает в переменную то ей присваивается максимально возможное значение ( ну или минимально, если результат отрицательный ).
[Ответ]
Dr.PC 19:52 17.09.2007
Сообщение от Dr.PC:
Но тут вазможны варианты с выходом за область лопустимых значений, поэтому лучше использовать оператор XOR вместо +-.
Сообщение от Dr.PC:
a= a^b
b= b^a
a= a^b
так вроде.. если не туплю... (^ оператор исключающего или)
Сообщение от Dr.PC:
ужс... Не потому ли, что не тот телефон для программы выбрали?
то есть по-твоему проверку на то, создался ли указатель, делаюбт от дури?
[Ответ]
Dr.PC 21:01 18.09.2007
Сообщение от RJ Presto:
то есть по-твоему проверку на то, создался ли указатель, делаюбт от дури?
нет, на всякий случай. Потому что может быть запущено куча приложений, которые выжрали всю память (да и мало-ли что может случится). А проверку делают не на то, создался ли указатель, а на то, выделился ли кусок памяти, на который этот указатель должен указывать. А то я могу попросить выделить 3 Гб памяти под массив. И тогда мне система болт отпишет. Или мы про разное говорим? Приведи код.
[Ответ]
RJ Presto 21:19 18.09.2007
Сообщение от Dr.PC:
А проверку делают не на то, создался ли указатель, а на то, выделился ли кусок памяти, на который этот указатель должен указывать. А то я могу попросить выделить 3 Гб памяти под массив. И тогда мне система болт отпишет. Или мы про разное говорим? Приведи код.
код не покажу - нет его, а писался полгода назад, под симбман.
да, выделение памяти очевидно и проверялось...
[Ответ]
все регистры не выжрут через них можно поменять
[Ответ]
Dr.PC 09:45 19.09.2007
во-во.. хотя бы так.
Хотя у меня была одно время мания всё программу писать в регистрах, стараясь совершенно не использовать оперативку (наверное это болезнь всех начинающих) - у меня тогда вечно регистров не хватало. Тем более писал под персоналку, а у неё регистров маловато.
[Ответ]