|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrey Tarasevich 2:5020/400 29 Nov 2001 05:19:14 To : Sashka Yackubtchick Subject : Re: максимум двух чисел без сравнения -------------------------------------------------------------------------------- Sashka Yackubtchick wrote: > > Пpивет Andrey! > > 28 Nov 01 04:54, Andrey Tarasevich писАл(а) к Kostya Sudilovsky: > > >> ... > >> >> как найти максимум двух чисел не используя условного оператора > >> YZ> max(x,y) = (x+y+|x-y|)/2 > >> Так ведь сказано: не используя условного оператора > >> abs(x) по определению x если x>=0 иначе -x > >> ... > > AT> По определению - да. По реализации - не обязательно. Если число 'x' > AT> задано в дополнительном коде, то 'abs(x)' получается путем сброса > AT> знакового бита в 'x'. > > Во всех известных мне машинах ЦЕЛОЧИСЛЕHЫЕ типы хранят отрицательные значения > в обратном коде. Я не буду спорить с существованием машин, которые хранят целые значения в обратном коде, но основная масса машин хранит их в _дополнительном_, а не в обратном, коде. Именно его ты, по-видимому, и имеешь в виду, перепутав при этом название. Иногда дополнительный код называют "дополнительным обратным", но просто "обратным" его назвать нельзя. Просто обратный код - это другой код. Я в своем письме допустил ошибку. Я имел в виду код, называемый signed magnitude, а не дополнительный код. > Для того чтобы незнакомому с этим понятием было понятно. > Любой тип в представлении на компьютере имеет количество разрядов > обратный код = минимальному числу на разряд выше этого числа разрядов > минус абсолютное значение отрицательного числа. > Если бы регистры хранили десятичное трехразрядное число то минус 1 > было бы = 1000(минимальное число из 4х разрядов) - 1 = 999 > а минус 2 = 1000 - 2 = 998 > В двоичном типе байт (8 разрядов) - 1 будет соответсвенно > 1 0000 0000 (9 разрядов) - 1 = 1111 1111 > -2 = 1 0000 0000 - 0000 0010(два) = 1111 1110 Это называется _дополнительным_ кодом (2's complement). Обратный код (1's complement) отрицательного числа образуется простым инвертированием битов абсолютного представления. > Изменить знак числа с помощью лишь одного изменения знакового бита можно > лишь в некоторых FPU. Конкретные платформы к делу не относятся. Речь идет о кодах. Best regards, Андрей. --- ifmail v.2.15dev5 * Origin: good enough (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/668281ed35b4.html, оценка из 5, голосов 10
|