Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26324
Рейтинг: 2147
#16: 2010-09-30 22:57:59 ЛС | профиль | цитата
foksov писал(а):
Минусом отличается

Очень вразумительный ответ. Не минусом он отличаетс, а разрядностью --
Integer -- 31 бит + 32-й знаковый бит
Cardinal -- полные 32 бита

карма: 22

0
Ответов: 1429
Рейтинг: 50
#17: 2010-09-30 23:03:18 ЛС | профиль | цитата
nesco, но раз он беззнаковый, значит он не будет понимать(запоминать) отрицательных чисел?
Это положительный, удвоенный, integer?
карма: 0

0
Ответов: 1376
Рейтинг: 198
#18: 2010-09-30 23:06:41 ЛС | профиль | цитата
Да! И это правильный ответ, говорящий о том, что ограничивать лучше снаружи компонента, а не внутри, т.к. после обратного преобразования может появится "-"
------------ Дoбавленo в 23.06:
Я про
nesco писал(а):
Integer -- 31 бит + 32-й знаковый бит
Cardinal -- полные 32 бита

карма: 1

0
Разработчик
Ответов: 26324
Рейтинг: 2147
#19: 2010-09-30 23:09:09 ЛС | профиль | цитата
Вы вообще, про что Не пойти ли вам почитать мат часть про организацию работы команд процессора, и чем, на уровне команд, отличается знаковое число от беззнакового
карма: 22

0
Ответов: 1429
Рейтинг: 50
#20: 2010-09-30 23:11:58 ЛС | профиль | цитата

Коллеги, положительную память сделать нельзя, поскольку при выводе из памяти всеравно надо integer, а значит появится знак, но среда не умеет непосредственно работать с типом Cardinal, или byte.
Это вывод, на нем можно закончить
карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2147
#21: 2010-09-30 23:13:04 ЛС | профиль | цитата
foksov, если ты сохранишь Integer в Cardinal, а затем, пересохранишь снова в Integer, то как там был минус, так он там и останется, потому, что никуда не исчезнет 32-бит, если ты сам его не удалишь
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#22: 2010-09-30 23:14:22 ЛС | профиль | цитата
foksov, вообще-то имеем тождество N == integer(cardinal(N)), где N - число типа integer. Т.е. исключить числа меньше нуля простым преобразованием туда сюда не получится.
------------ Дoбавленo в 23.14:
nesco, опередил...
карма: 26
0
Разработчик
Ответов: 26324
Рейтинг: 2147
#23: 2010-09-30 23:15:12 ЛС | профиль | цитата
login писал(а):
Это вывод, на нем можно закончить

Мама моя родная... Ты хоть понял сам, что написал
login писал(а):
положительную память сделать нельзя

У нас уже появилось такое понятие, как "положительня память", это, вообще, что за зверь такой
А что, бывает ещи и отрицательная память
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#24: 2010-09-30 23:16:58 ЛС | профиль | цитата
[flood]
nesco писал(а):
А что, бывает ещи и отрицательная память

нет, бывает еще целочисленная память и память действительная [/flood]
карма: 26
0
Разработчик
Ответов: 26324
Рейтинг: 2147
#25: 2010-09-30 23:18:38 ЛС | профиль | цитата
[flood]Dilma, стеб засчитан [/flood]
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#26: 2010-10-01 00:38:33 ЛС | профиль | цитата
login писал(а):
В делфи нет способов, кроме установки в коде дополнительного IF ?
есть. Тебе Dilma подсказал.
Вот так одной строкой решается в IC (HiAsm) и точно так-же одной строкой в Delphi.

Add(MainForm,2953706,112,126)
{
Width=248
Height=95
}
Add(InlineCode,1630934,217,126)
{
WorkPoints=#6:doWork|
EventPoints=#6:onPlus|
DataPoints=#4:data|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|25: onPlus,data:THI_Event;|49: procedure doWork(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|0:|29:procedure THiAsmClass.doWork;|5:begin|54: _hi_OnEvent(onPlus,MAX(0,ReadInteger(_Data,Data,0)));|4:end;|4:end.|
link(data,11379556:Text,[])
link(onPlus,1663723:doText,[])
}
Add(Label,1663723,273,126)
{
Left=170
Top=25
}
Add(Button,12107465,161,126)
{
Left=15
Top=20
Data=Integer(12)
link(onClick,1630934:doWork,[])
}
Add(Edit,11379556,217,84)
{
Left=95
Top=20
Text="0"
}

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26324
Рейтинг: 2147
#27: 2010-10-01 01:15:37 ЛС | профиль | цитата
Tad, не надо тут умничать, то, что ты показал -- это вызов внешней функции MAX, котора состоит из тех же условий


//[function Max]
function Max( X, Y: Integer ): Integer;
asm
{$IFDEF F_P}
MOV EAX, [X]
MOV EDX, [Y]
{$ENDIF F_P}
CMP EAX, EDX
JGE @@exit
MOV EAX, EDX
@@exit:
end {$IFDEF F_P} [ 'EAX', 'EDX' ] {$ENDIF};
//[END Max]


Да, это быстрый код, но и он использует метод анализа знакового флага, как и любой if
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#28: 2010-10-01 01:28:23 ЛС | профиль | цитата
Помоему тут все умничают. (кроме Dilma. Он сразу ушел на Max)
nesco писал(а):
внешней функции MAX, котора состоит из тех же условий
посмотри на реализацию внешней функции MAX, примененной в IC - реализована на ассемблере и IF на флагах процессора.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26324
Рейтинг: 2147
#29: 2010-10-01 01:45:43 ЛС | профиль | цитата
Tad писал(а):
и IF на флагах процессора

О! Именно на If, о чем и разговор. Но прикол не в том, прикол в другом -- MAX не анализирует условие несоответствия числа (в отличии от If), а тупо его обрезает, в некоторых случаях, это не применимо. Одно дело, когда надо ограничить диапзон значений, другое дело, когда надо тупо не пустить число дальше, и заставить алгоритм сменить это число на допустимое

------------ Дoбавленo в 01.45:
[flood]Tad, тыт тут с If поосторожнее, а то login опять за голову хватится, оно для него, как быку красная тряпка[/flood]
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#30: 2010-10-01 02:30:44 ЛС | профиль | цитата
Tad писал(а):
IF на флагах процессора.
это не IF в нашем привычном понимании. Там "физика" совсем другая. Там больше похоже на поляризованное реле +0.6v - пошло направо, -0.05v - налево.
nesco писал(а):
сменить это число на допустимое
MAX(0,ReadInteger(_Data,Data,0))
Ну и меняй себе красненькое число на любое - хоть на -200, хоть на MIN(0,....) будешь иметь "отрицательную" память. Вот до чего вы договорились.

А в первых процессорах команда SUB (вычесть) выполнялась сложением.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)