![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
НЕстандартное сложение
Denis__ © (2009-01-19 14:07:00)Здравствуй, All!)) Есть задача, не пойму кое-что.
"Используя для вещественных чисел нормализованное представление вида : знак порядка, десятичный порядок(2 зн) знак мантиссы(4 зн)и заданные числа
a = +12+7153
b = +12-7153
c = +01-1002
вычислить
r = a + (b + c)
p = (a + b) + c
p = с = +01-1002 я вычислил. Т.к. порядки у a и b одинаковые. Прблема в нормализации мантисс. На лекциях говорили, что 1<=m<2 m - мантисса.А как понимать эти четырехзначные мантиссы?
Denis__ (2009-01-19 15:21:00) [1]ок, спасибо)) Вроде разобрался.
Сергей М. (2009-01-19 15:16:00) [2]Тьфу, наоборот :
+1 порядок - сдвиг мантиссы на разряд вправо,
-1 порядок - сдвиг мантиссы на разряд влево,
Denis__ (2009-01-19 15:02:00) [3]вот, тогда при выравнивании порядков b и с
b = +01+0000
с = +01-1002
b + c = c = +01-1002
a + (b + c) = a + c = c.
А если выравнивать в другую сторону, т.е. с = +12+0000, то
b + c = b
a + (b + c) = a + b = 0 ( Сходится с ответом)
Как тогда действовать?
Сергей М. (2009-01-19 14:55:00) [4]Да, пардон, это у a и b одинаковые.
> Как при выравнивании порядков меняются мантиссы?
Сдвигаются в требуемую сторону.
Уменьшение порядка на 1 требует сдвига мантиссы вправо на 1 разряд. И наоборот - увеличение на 1 требует сдвига влево на 1
Denis__ (2009-01-19 14:54:00) [5]В моем случае получается
a = (10^12)*7153
b = (10^12)*(-7153)
c = 1*(-1002)?
Так что ли?(
Denis__ (2009-01-19 14:46:00) [6]b = +12-7153
c = +01-1002
выровнять порядок - значит порядок будет +01 , мантисса b = 0000?
b + с = c
а + с = с?
Или как? Как при выравнивании порядков меняются мантиссы?
MBo (2009-01-19 14:44:00) [7]Пример 0.259 + 40 = 4 * 10 + 0.0259 * 10 = 4.0259*10 ~ 40.25, если четыре значащих цифры учитываются
Сергей М. (2009-01-19 14:43:00) [8]
> сначала выровнять порядки b и c.
Да.
> Т.е. из +12 получить +01
Зачем ?
У b и c порядки и знаки порядков одинаковые, значит достаточно сложить мантисы.
При переполнении результата сложения мантисс скорректировать результирующий порядок на соотв.значение.
MBo (2009-01-19 14:41:00) [9]>На лекциях говорили, что 1<=m<2 m - мантисса
это для бинарного представления, у тебя же десятичное, и, в зависимости от соглашения, мантисса может быть в пределах 0.1..1 или 1..10 (или даже 1000..9999)
Задача направлена на понимание ограниченной точности вещественных чисел, и зависимости результата вычислений от порядка действий
Для сложения чисел с разными порядками нужно привести их к одному порядку, сдвинув мантиссу (или дополнив нулями), подобно тому, как делается и при обычном сложении чисел на бумажке
Denis__ (2009-01-19 14:37:00) [10]Как всегда коротко) И все же.
Как тогда нормализовать мантиссы?
a + (b + c)
надо сначала выровнять порядки b и c. Т.е. из +12 получить +01. при этом надо каждый раз отнимать от 12 1, а мантиссу числа b делить на 2? Оставляя только 4 знака каждый раз?
Сергей М. (2009-01-19 14:32:00) [11]
> Прблема в нормализации мантисс
Мантисса считается нормализованной, если ее старший разряд не равен нулю.
Сергей М. (2009-01-19 14:30:00) [12]
> как понимать эти четырехзначные мантиссы?
Вот прямо так и понимай - мантиса представлена 4-мя разрядами
Denis__ (2009-01-19 14:09:00) [13]Сорри(
знак порядка, десятичный порядок(2 зн) знак мантиссы, мантисса(4 зн)