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