Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » » Программирование
Философия, технологии, алгоритмы!

Ответ
 
Опции темы
Старый 01.06.2007, 23:11   #31   
хЕрург
 
Аватар для doXtor
 
Сообщений: 3,857
Регистрация: 05.02.2006
Возраст: 45

doXtor вне форума Не в сети
на TigerSHARC 201(202) если размер переменной 16 бит

.var a;
.var b;

j0 = a;;
r1:0 = l[j0+=2];;
r1 = r0;;
r0 = lshift r0 by 16;;
r2 = 0xFFFF;;
r1 = r1 and r2;;
r0 = r1 + r0;;
j0 = a;;
[j0+j31] = r0;;

  Ответить с цитированием
Старый 01.06.2007, 23:47   #32   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
о ужас...
А что так длинно?
  Ответить с цитированием
Старый 02.06.2007, 00:54   #33   
xxCENSOREDxx
 
Сообщений: 983
Регистрация: 09.04.2006
Возраст: 46

alemiks вне форума Не в сети
на php
list($a, $b) = array($b, $a);
  Ответить с цитированием
Старый 02.06.2007, 03:25   #34   
няшечка
 
Аватар для mikе
 
Сообщений: 5,311
Регистрация: 13.06.2003

mikе вне форума Не в сети
alemiks, +1
  Ответить с цитированием
Старый 02.06.2007, 14:18   #35   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
Цитата:
Сообщение от alemiks
на php
на Питоне веселей..
  Ответить с цитированием
Старый 04.09.2007, 19:40   #36   
Форумец
 
Аватар для The_God
 
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 44

The_God вне форума Не в сети
на lua тоже
a,b = b,a
  Ответить с цитированием
Старый 04.09.2007, 23:07   #37   
.deviant
 
Аватар для imago^
 
Сообщений: 127
Регистрация: 14.04.2007
Возраст: 37

imago^ вне форума Не в сети
попонтовались =)))
  Ответить с цитированием
Старый 10.09.2007, 15:02   #38   
Форумец
 
Сообщений: 3
Регистрация: 12.06.2007

=]СтепаныЧ[= вне форума Не в сети
a := a xor b;
b := a xor b;
a := a xor b;
  Ответить с цитированием
Старый 10.09.2007, 15:23   #39   
:::Just_a_DJ:::
 
Аватар для DJ Anarchist
 
Сообщений: 1,559
Регистрация: 23.11.2004
Возраст: 39

DJ Anarchist вне форума Не в сети
=]СтепаныЧ[=, читай внимательнее...

Цитата:
Сообщение от Dr.PC 24.05.2007, 19:03
a= a^b
b= b^a
a= a^b
так вроде.. если не туплю... (^ оператор исключающего или)
  Ответить с цитированием
Старый 10.09.2007, 16:40   #40   
Литр джиксер
 
Аватар для Legos
 
Сообщений: 3,683
Регистрация: 18.09.2006
Возраст: 36

Legos вне форума Не в сети
Цитата:
Сообщение от Vladimix
Дак...конечно, понты, зачем, спрашивается, нормальному человеку понадобится менять значения переменных без участия третьей??
Это используется в программировании в случае приоритетности экономии памяти, а не быстроты работы программы.
  Ответить с цитированием
Старый 12.09.2007, 21:18   #41   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
с трудом представляю себе ситуацию, когда нельзя выделить пару байт...
  Ответить с цитированием
Старый 17.09.2007, 18:00   #42   
мумиё
 
Аватар для RJ Presto
 
Сообщений: 284
Регистрация: 02.01.2006
Возраст: 40

RJ Presto вне форума Не в сети
при кодинге под смартфоны - легко
  Ответить с цитированием
Старый 17.09.2007, 18:02   #43   
:::Just_a_DJ:::
 
Аватар для DJ Anarchist
 
Сообщений: 1,559
Регистрация: 23.11.2004
Возраст: 39

DJ Anarchist вне форума Не в сети
RJ Presto, смарты вряд ли, а вот под простые мобилы - да... в смартах все же есть поддержка карт памяти...
  Ответить с цитированием
Старый 17.09.2007, 18:02   #44   
Форумец
 
Аватар для The_God
 
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 44

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;
  Ответить с цитированием
Старый 17.09.2007, 18:03   #45   
мумиё
 
Аватар для RJ Presto
 
Сообщений: 284
Регистрация: 02.01.2006
Возраст: 40

RJ Presto вне форума Не в сети
Цитата:
Сообщение от DJ Anarchist
RJ Presto, смарты вряд ли, а вот под простые мобилы - да... в смартах все же есть поддержка карт памяти...
тока вот код при выполнении размещается в опреативной памяти
  Ответить с цитированием
Старый 17.09.2007, 18:51   #46   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
Цитата:
Сообщение от 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
при кодинге под смартфоны - легко
я ору.. уже сто лет как такие ситуации даже при кодинге под самые замухрыжные контроллеры не возникают. А уж в смартфоне или телефоне, где уже давно и окна, и игры и всякие прибамбасы не суметь ВРЕМЕННО выделить пару байт для одной операции надо суметь.
  Ответить с цитированием
Старый 17.09.2007, 18:55   #47   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
Цитата:
Сообщение от RJ Presto
тока вот код при выполнении размещается в опреативной памяти
ага, причём не только данные, но и команды. посчитаем, сколько места ПОСТОЯННО занимает код по переброске двух переменных и сколько места ВРЕМЕННО (на одну операцию всего лишь) сэкономится?
Эффект может быть только в контроллерах с раздельной памятью команд и оперативкой, но он такой мизерный, что это даже смешно.
  Ответить с цитированием
Старый 17.09.2007, 19:08   #48   
мумиё
 
Аватар для RJ Presto
 
Сообщений: 284
Регистрация: 02.01.2006
Возраст: 40

RJ Presto вне форума Не в сети
Цитата:
Сообщение от Dr.PC
ага, причём не только данные, но и команды. посчитаем, сколько места ПОСТОЯННО занимает код по переброске двух переменных и сколько места ВРЕМЕННО (на одну операцию всего лишь) сэкономится?
Эффект может быть только в контроллерах с раздельной памятью команд и оперативкой, но он такой мизерный, что это даже смешно.
почему же тогда бывают ситуации, когда даже на указатель памяти не хватает?
  Ответить с цитированием
Старый 17.09.2007, 19:20   #49   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
Цитата:
Сообщение от RJ Presto
почему же тогда бывают ситуации, когда даже на указатель памяти не хватает?
ужс... Не потому ли, что не тот телефон для программы выбрали?
  Ответить с цитированием
Старый 17.09.2007, 19:48   #50   
Форумец
 
Аватар для The_God
 
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 44

The_God вне форума Не в сети
Цитата:
Сообщение от Dr.PC
А я не тоже самое написал в том же посте, который ты процитировал?
не тоже самое зависит от платформы, может работать, а может и нет.

зы. учи матчасть

ps уточню что я говорю про с++, в нём эти два куска кода не эквивалентны обмену через третью переменную, тут все зависит от того какие числа мы меняем местами, хор подойдет для целых и дробных чисел ( и то если их физически привести к целым, а потом обратно ),
а математические манипуляции с целыми числами могут дать в результате переполнение, результат которого будет зависеть от типа процессора на котором этот код потом будет выполняться,
например если так переставлять местами значения в ММХ регистрах то получится совсем не то что хочется т.к. там есть не только циклическое переполнение в котором данный способ прокатил-бы, но и переполнение насыщением, это когда результат если не помещает в переменную то ей присваивается максимально возможное значение ( ну или минимально, если результат отрицательный ).
  Ответить с цитированием
Старый 17.09.2007, 19:52   #51   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
Цитата:
Сообщение от Dr.PC
Но тут вазможны варианты с выходом за область лопустимых значений, поэтому лучше использовать оператор XOR вместо +-.
Цитата:
Сообщение от Dr.PC
a= a^b
b= b^a
a= a^b

так вроде.. если не туплю... (^ оператор исключающего или)
Может не мне учить надо?
  Ответить с цитированием
Старый 17.09.2007, 20:05   #52   
Форумец
 
Аватар для The_God
 
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 44

The_God вне форума Не в сети
прасти, не заметил
  Ответить с цитированием
Старый 17.09.2007, 21:02   #53   
мумиё
 
Аватар для RJ Presto
 
Сообщений: 284
Регистрация: 02.01.2006
Возраст: 40

RJ Presto вне форума Не в сети
Цитата:
Сообщение от Dr.PC
ужс... Не потому ли, что не тот телефон для программы выбрали?
то есть по-твоему проверку на то, создался ли указатель, делаюбт от дури?
  Ответить с цитированием
Старый 18.09.2007, 21:01   #54   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
Цитата:
Сообщение от RJ Presto
то есть по-твоему проверку на то, создался ли указатель, делаюбт от дури?
нет, на всякий случай. Потому что может быть запущено куча приложений, которые выжрали всю память (да и мало-ли что может случится). А проверку делают не на то, создался ли указатель, а на то, выделился ли кусок памяти, на который этот указатель должен указывать. А то я могу попросить выделить 3 Гб памяти под массив. И тогда мне система болт отпишет. Или мы про разное говорим? Приведи код.
  Ответить с цитированием
Старый 18.09.2007, 21:19   #55   
мумиё
 
Аватар для RJ Presto
 
Сообщений: 284
Регистрация: 02.01.2006
Возраст: 40

RJ Presto вне форума Не в сети
Цитата:
Сообщение от Dr.PC
А проверку делают не на то, создался ли указатель, а на то, выделился ли кусок памяти, на который этот указатель должен указывать. А то я могу попросить выделить 3 Гб памяти под массив. И тогда мне система болт отпишет. Или мы про разное говорим? Приведи код.
код не покажу - нет его, а писался полгода назад, под симбман.
да, выделение памяти очевидно и проверялось...
  Ответить с цитированием
Старый 18.09.2007, 21:36   #56   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
это две большие разницы.
  Ответить с цитированием
Старый 19.09.2007, 04:05   #57   
Форумец
 
Аватар для The_God
 
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 44

The_God вне форума Не в сети
все регистры не выжрут через них можно поменять
  Ответить с цитированием
Старый 19.09.2007, 09:45   #58   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
во-во.. хотя бы так.
Хотя у меня была одно время мания всё программу писать в регистрах, стараясь совершенно не использовать оперативку (наверное это болезнь всех начинающих) - у меня тогда вечно регистров не хватало. Тем более писал под персоналку, а у неё регистров маловато.
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind