|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrew Ezhguroff 2:5020/400 02 Dec 2001 05:35:31 To : Kartohin Ruslan Subject : Re: максимум двух чисел без сравнения -------------------------------------------------------------------------------- Привет! "Kartohin Ruslan" <Kartohin.Ruslan@p13.f61.n5084.z2.fidonet.org> сообщил(а) нам: > >> ИМХО, ABS во многих языках есть не что иное как безусловное убивание > AE> Ошибаешься. Во первых это вопрос не языка, а аппаратного представления > AE> чисел со знаком. А во вторых подавляющее большинство машин использует для > AE> этого дополнительный код (реже обратный - там алгоритм очень похож), в > AE> котором "убиванием" бита не отделаешься (алгоритм я кинул в эху 28 > AE> ноября). > Знаю, знаю.. Вспомнил... Ошибся, соppи > Hу тогда как не кpути все pавно чеpез условие пеpеть. Hе обязательно. Если есть квадратный корень, то sqrt(x*x). Иначе - через XOR: 1. для дополнительного кода (-x)==((not x)+1) 2. (x xor true)==(not x); (x xor false)==x 3. Старший бит положительного числа - 0, отрицательного - 1. Т.е. выделяем старший бит, копируем его во все биты переменной Temp (для положительного получаем 0, для отрицательного - (-1)), производим xor числа и Temp и к полученному результату прибавляем младший бит Temp. С уважением, Андрей. --- ifmail v.2.15dev5 * Origin: COMSTAR Telecommunications (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/1216857ead1d1.html, оценка из 5, голосов 10
|