Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.03;
Скачать: CL | DM;

Вниз

НЕстандартное сложение   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
15-1257230908
Дмитрий С
2009-11-03 09:48
2010.01.03
Как отловить изменение location.hash (JS,XHTML)


1-1232613443
harisma
2009-01-22 11:37
2010.01.03
Использование AdjustClientRect


15-1256418198
XXL
2009-10-25 01:03
2010.01.03
Давно ли delphimaster рекламирует сомнительные сайты ?


15-1257313780
Kolan
2009-11-04 08:49
2010.01.03
Делать DMClient опенсорсным?


1-1232020600
inviz
2009-01-15 14:56
2010.01.03
Проблема с выводом потока в файл