Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Sashka Yackubtchick                  2:5054/29.54   04 Dec 2001  06:20:13
 To : Alexey Gradovtsev
 Subject : максимум двух чисел без сравнения
 -------------------------------------------------------------------------------- 
 
 
 03 Dec 01 21:50, Alexey Gradovtsev писАл(а) к Andrew Ezhguroff:
 
  AG> Приветствую тебя, о Andrew всем Andrewам!
 
  AG> Andrew Ezhguroff в письме к Alexey Gradovtsev от 02 декабря 2001 г., 05:44
  AG> писал:
 
  >>> А для общего случая вещественных чисел можно что-то придумать?
  >>> Просто уже интересно стало.
  AE>> В вещественных еще проще (во всяком случае на IBM-PC): достаточно
  AE>> обнулить знаковый бит.
 
  AG> А каков их полный формат?
 
 Видимо имеется ввиду формат IEEE.
 Тут автор письма несколько туманно обошёл сложности в контексте работы
 с данным форматом с целью сабжа.
 Дело в том что непосредственно работая с этим форматом в FPU нельзя
 использовать стандартные для целочисленных команд и регистров логические команды
 AND и OR которые обычно применяются для установки и обнуления бита.
 Это сделано специально для того чтобы можно было избежать ненармолизованого
 формата, использование которого приведёт к исключению в FPU.
 Hо, в FPU можно просто вызвать команду fabs которая преобразует значение
 в регистре в абсолютное.
 Можно конечно обнулить бит и непосредственно в памяти, но если нам нужно
 вернуть MAX не изменив сами переменные то в данном случае мы нарушим это
 условие.
 Возможно уже много слов напечатано а смысл ускальзает :)
 Попробуем пояснить на примере.
 Допустим мы хотим найти сабж в целочисленом типе, для этого нам нужно было
 бы загрузить переменные в регистры получить их abs и потом проделать еще
 арифметические операции над ними чтобы получить max.
 Если бы достаточно было обнулить какой-то бит то все было бы ОК.
 Мы обнулили бы его в регистре, проделали бы операции и вернули max.
 Hо в целочисленых типах и регистрах этого недостаточно, хотя обнулить бит просто
 мы не получим abs значения таким образом.
 Сейчас пусть этого достаточно в формате IEEE. Hо мы не можем этого
 сделать непосредственно в регистре сопроцессора.
 Получается мы можем сделать это только в памяти, но тогда мы "испортим"
 переменную. Получается что мы должны будем создать две временные переменные,
 загрузить в них реальные переменные (это одной командой неполучится, конкретная
 скорость такого перемещения будет зависить от размера вещественого типа - он
 может быть от 4х до 10и байт). Только после этого мы можем во временых
 переменных обнулить байт и загрузить их в FPU для последующих операций.
 С другой стороны в реальной жизни делать это с веществеными типами не нужно -
 все известные мне сопроцессоры имеют команду abs которая как раз этим и
 занимается.
 Теперь по поводу формата. Он не такой уж и простой :)
 Hесмотря на то что знак действительно определяется одним битом, он куда сложнее
 представления целочисленого.
 
 Короткое вещественное (32 бита):
 -------------------------------
 (нумерование битов начиная с нулевого - самый младший 0 старший - 31)
 Бит 31 - знак мантиссы, биты 30-23 - 8ми битная экспонанта (+127), биты с 22го
 по нулевой - 23х битная мантисса без первой цифры.
 
 Длинное вещественное(64 бита):
 ---------------------
 Бит 63 - знак мантиссы, биты 62-52 - 11и битная экспонанта (+1024),
 биты 51-0 52х битная мантисса без первой цифры.
 
 Расширенное вещественное(80 бит):
 ---------------------------------
 бит 79 - знак мантиссы.
 78-64 - 15ти битная экспонанта(+16 383)
 63-0 - 64х битная мантисса с первой цифрой (первая всегда равна 1 значит
 63ий бит всегда равен одному)
 
 Чувствую что несколько сумбурно объяснил :)
 Hо боюсь если перепешу еще хуже будет.
 
 Пока!
              Sashka, The Svin.
 
 --- GoldED/W32 3.00.Beta1+
  * Origin: Svin, Perm, Russia  (2:5054/29.54)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 максимум двух чисел без сравнения   Andrew Simontsev   27 Nov 2001 01:11:30 
 Re: максимум двух чисел без сравнения   Yurij Zabelyshynskij   27 Nov 2001 00:31:15 
 максимум двух чисел без сравнения   Kostya Sudilovsky   27 Nov 2001 22:36:05 
 Re: максимум двух чисел без сравнения   Yurij Zabelyshynskij   28 Nov 2001 02:51:03 
 максимум двух чисел без сравнения   Victor Petrenko   28 Nov 2001 21:20:24 
 Re: максимум двух чисел без сравнения   Yurij Zabelyshynskij   28 Nov 2001 23:52:18 
 максимум двух чисел без сравнения   Victor Petrenko   29 Nov 2001 01:11:47 
 Re: максимум двух чисел без сравнения   Andrey Tarasevich   28 Nov 2001 05:54:54 
 Re: максимум двух чисел без сравнения   Sergey Voloshchuk   28 Nov 2001 12:47:22 
 Re: максимум двух чисел без сравнения   Andrew Ezhguroff   28 Nov 2001 14:08:02 
 Re: максимум двух чисел без сравнения   Yurij Zabelyshynskij   28 Nov 2001 23:52:16 
 Re: максимум двух чисел без сравнения   Andrey Tarasevich   29 Nov 2001 03:40:45 
 максимум двух чисел без сравнения   Sashka Yackubtchick   29 Nov 2001 02:51:51 
 Re: максимум двух чисел без сравнения   Andrey Tarasevich   29 Nov 2001 05:19:14 
 максимум двух чисел без сравнения   Sashka Yackubtchick   04 Dec 2001 01:13:37 
 Re^2: максимум двух чисел без сравнения   Sergey Politov   29 Nov 2001 06:29:25 
 максимум двух чисел без сравнения   Stanislav Shwartsman   28 Nov 2001 08:22:50 
 максимум двух чисел без сравнения   Alexander Chelmodeev   28 Nov 2001 14:27:32 
 максимум двух чисел без сравнения   Stanislav Shwartsman   28 Nov 2001 21:57:33 
 максимум двух чисел без сравнения   Alexander Chelmodeev   29 Nov 2001 02:20:34 
 максимум двух чисел без сравнения   Andrew Simontsev   30 Nov 2001 04:54:50 
 Re: максимум двух чисел без сравнения   Andrey Tarasevich   30 Nov 2001 20:44:59 
 Re: максимум двух чисел без сравнения   Andrew Ezhguroff   28 Nov 2001 14:08:02 
 максимум двух чисел без сравнения   Alexey Gradovtsev   01 Dec 2001 21:18:25 
 Re: максимум двух чисел без сравнения   Andrew Ezhguroff   02 Dec 2001 06:44:58 
 максимум двух чисел без сравнения   Kostya Sudilovsky   02 Dec 2001 23:36:38 
 максимум двух чисел без сравнения   Alexey Gradovtsev   03 Dec 2001 22:50:22 
 максимум двух чисел без сравнения   Sashka Yackubtchick   04 Dec 2001 06:20:13 
 Re: максимум двух чисел без сравнения   Andrew Ezhguroff   04 Dec 2001 06:39:06 
 максимум двух чисел без сравнения   Alexey Gradovtsev   28 Nov 2001 17:12:49 
 максимум двух чисел без сравнения   Egor Belskikh   28 Nov 2001 23:25:06 
 максимум двух чисел без сравнения   Sashka Yackubtchick   29 Nov 2001 02:44:06 
 максимум двух чисел без сравнения   Kartohin Ruslan   29 Nov 2001 09:12:53 
 Re: максимум двух чисел без сравнения   Andrew Ezhguroff   30 Nov 2001 07:04:48 
 максимум двух чисел без сравнения   Kartohin Ruslan   02 Dec 2001 00:18:59 
 Re: максимум двух чисел без сравнения   Andrew Ezhguroff   02 Dec 2001 05:35:31 
 Re: максимум двух чисел без сравнения   Andrey Dashkovsky   28 Nov 2001 23:26:02 
 максимум двух чисел без сравнения   Sashka Yackubtchick   04 Dec 2001 19:53:50 
 максимум двух чисел без сравнения   Nickita A Startcev   01 Dec 2001 02:53:44 
 максимyм двyх чисел без сpавнения   Peter Pike\'s   14 Dec 2001 03:15:17 
Архивное /ru.algorithms/33843c0c655a.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional