foksov писал(а):
Минусом отличаетсяОчень вразумительный ответ. Не минусом он отличаетс, а разрядностью --
Integer -- 31 бит + 32-й знаковый бит
Cardinal -- полные 32 бита
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
foksov писал(а): Минусом отличаетсяОчень вразумительный ответ. Не минусом он отличаетс, а разрядностью -- Integer -- 31 бит + 32-й знаковый бит Cardinal -- полные 32 бита |
|||
| карма: 22 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
nesco, но раз он беззнаковый, значит он не будет понимать(запоминать) отрицательных чисел?
Это положительный, удвоенный, integer? |
|||
| карма: 0 |
|
|
Ответов: 1376
Рейтинг: 198
|
|||
|
Да! И это правильный ответ, говорящий о том, что ограничивать лучше снаружи компонента, а не внутри, т.к. после обратного преобразования может появится "-"
------------ Дoбавленo в 23.06: Я про nesco писал(а): Integer -- 31 бит + 32-й знаковый бит
Cardinal -- полные 32 бита |
|||
| карма: 1 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
Вы вообще, про что
|
|||
| карма: 22 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
Коллеги, положительную память сделать нельзя, поскольку при выводе из памяти всеравно надо integer, а значит появится знак, но среда не умеет непосредственно работать с типом Cardinal, или byte. Это вывод, на нем можно закончить |
|||
| карма: 0 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
foksov, если ты сохранишь Integer в Cardinal, а затем, пересохранишь снова в Integer, то как там был минус, так он там и останется, потому, что никуда не исчезнет 32-бит, если ты сам его не удалишь
|
|||
| карма: 22 |
|
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
|
foksov, вообще-то имеем тождество N == integer(cardinal(N)), где N - число типа integer. Т.е. исключить числа меньше нуля простым преобразованием туда сюда не получится.
------------ Дoбавленo в 23.14: nesco, опередил... |
|||
| карма: 26 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
login писал(а): Это вывод, на нем можно закончитьМама моя родная... Ты хоть понял сам, что написал login писал(а): положительную память сделать нельзяУ нас уже появилось такое понятие, как "положительня память", это, вообще, что за зверь такой А что, бывает ещи и отрицательная память |
|||
| карма: 22 |
|
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
|
[flood]
nesco писал(а): А что, бывает ещи и отрицательная памятьнет, бывает еще целочисленная память и память действительная |
|||
| карма: 26 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
[flood]Dilma, стеб засчитан
|
|||
| карма: 22 |
|
|
Ответов: 16884
Рейтинг: 1239
|
|||
|
login писал(а): В делфи нет способов, кроме установки в коде дополнительного IF ?Вот так одной строкой решается в IC (HiAsm) и точно так-же одной строкой в Delphi. |
|||
| карма: 25 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
Tad, не надо тут умничать, то, что ты показал -- это вызов внешней функции MAX, котора состоит из тех же условий
Да, это быстрый код, но и он использует метод анализа знакового флага, как и любой if |
|||
| карма: 22 |
|
|
Ответов: 16884
Рейтинг: 1239
|
|||
|
Помоему тут все умничают. (кроме Dilma. Он сразу ушел на Max)
nesco писал(а): внешней функции MAX, котора состоит из тех же условий |
|||
| карма: 25 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
Tad писал(а): и IF на флагах процессораО! Именно на If, о чем и разговор. Но прикол не в том, прикол в другом -- MAX не анализирует условие несоответствия числа (в отличии от If), а тупо его обрезает, в некоторых случаях, это не применимо. Одно дело, когда надо ограничить диапзон значений, другое дело, когда надо тупо не пустить число дальше, и заставить алгоритм сменить это число на допустимое ------------ Дoбавленo в 01.45: [flood]Tad, тыт тут с If поосторожнее, а то login опять за голову хватится, оно для него, как быку красная тряпка[/flood] |
|||
| карма: 22 |
|
|
Ответов: 16884
Рейтинг: 1239
|
|||
|
Tad писал(а): IF на флагах процессора.nesco писал(а): сменить это число на допустимоеMAX(0,ReadInteger(_Data,Data,0)) Ну и меняй себе красненькое число на любое - хоть на -200, хоть на MIN(0,....) будешь иметь "отрицательную" А в первых процессорах команда SUB (вычесть) выполнялась сложением. |
|||
| карма: 25 |
|