IPB

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  1 2 3 >  
Ответить в эту темуОткрыть новую тему
> Надо сложить два числа А и В, которые представлены в виде с плавающей точкой
Lady_Arvena
сообщение 18.1.2009, 23:21
Сообщение #1


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Есть ещё один вопрос, который мне очень непонятен...
Самое ужасное, что примера по нему вообще нет, то есть даже непонятно, как должно выглядеть то, чего они от меня хотят smile.gif.
Вот такое задание, если я не слишком тебя загружаю своей арифметикой, объясни пожалуйста, как делать.

Надо сложить два числа А и В, которые представлены в виде с плавающей точкой.
Вот эти числа:
[Ап] = +3; (порядок А)
[Ам] = +0.9; (мантисса А)
[Bп] = -1; (порядок В)
[Bм] = +0.55; (мантисса) --> (тут тоже не совсем понятно, а может ли быть мантисса и порядок одного операнда отличных знаков? Сколько смотрю про эти числа, нигде такого не встречала (чтобы порядок, как тут, -, а мантисса +)).
При этом указано, что порядки и мантиссы чисел А и В, надо представить в двоичной системе счисления и сформировать для них прямые коды. А потом, на основании прямых, сформировать обратные, и эти обратные уже использовать для вычислений. Результат окончательно представлять потом в прямом коде в нормализованной форме.
Самое непонятное: Разрядность модуля порядка должна быть равна 3, разрядность модуля мантиссы - 6 . Как это сделать? unsure.gif

И ещё вот вопрос: как такие числа (с плавающей точкой) представляются? Порядок отдельно, а мантисса отдельно?

Буду очень благодарна за любую помощь по этому вопросу
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 19.1.2009, 16:12
Сообщение #2


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(Lady_Arvena @ 19.1.2009, 2:21) *

1) (тут тоже не совсем понятно, а может ли быть мантисса и порядок одного операнда отличных знаков? Сколько смотрю про эти числа, нигде такого не встречала (чтобы порядок, как тут, -, а мантисса +)).

2) И ещё вот вопрос: как такие числа (с плавающей точкой) представляются? Порядок отдельно, а мантисса отдельно?
1)
пример +0.5 * 10 в степени -5 = 0.000005
+0.5 мантисса
-5 порядок
разные знаки...

пример -0.5 * 10 в степени +5 = -5000
-0.5 мантисса
+5 порядок
разные знаки...

2) да biggrin.gif

пример с плавающей точкой где-то здесь был - сейчас поищу smile.gif


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 19.1.2009, 16:20
Сообщение #3


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Вот тут похожее http://www.opeople.ru/ipb.html?s=&showtopi...ndpost&p=186103
только без дополнительного кода и уже сразу в 2СС

програмка на паскале http://www.opeople.ru/ipb.html?s=&showtopi...ndpost&p=169278 на похожую тему

вот тут некоторая попытка объяснения была smile.gif http://www.opeople.ru/ipb.html?s=&showtopi...ndpost&p=188201 про тип real


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 19.1.2009, 16:38
Сообщение #4


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(Lady_Arvena @ 19.1.2009, 2:21) *

Надо сложить два числа А и В, которые представлены в виде с плавающей точкой.
Вот эти числа:
[Ап] = +3; (порядок А)
[Ам] = +0.9; (мантисса А)
[Bп] = -1; (порядок В)
[Bм] = +0.55; (мантисса)

Самое непонятное: Разрядность модуля порядка должна быть равна 3, разрядность модуля мантиссы - 6 . Как это сделать? unsure.gif
эти числа , наверно в 10СС? или в 16СС?
переводи в нормальный вид (без степени - как 0.000005 и 5000 в примерах) и переводи в 2СС

потом будем по размерам мантиссы обрезать-округлять...


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 22.1.2009, 20:52
Сообщение #5


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Прошу прощения за небольшой перерыв (болела sad.gif )
Итак, вот что у меня получилось:
Перевела дробь 0.9 в двоичную систему счисления: 111001, и, если я правильно понимаю, перед дробью (если переводится дробь) надо всегда ставить 0 с точкой...
Тогда получается, что А (м) = 0.9 (10) = 0.111001.
А (п) = 3 (10) = 011.
В (п) = -1 (10) = -001.
Вот, приведу пример, как я считала дроби (надеюсь, что это правильно):
В (м) = 0.55 (10) = ?
Считаю до 7 разрядов (там потом этот 7-й последний используется "для округления"..., честно говоря, не могу понять, зачем, и как это округление производить... huh.gif )
Считаю:
2^-1 = 0.5, 0.5 < 0.55, значит первый разряд = 1, остаток = 0.05;
2^-2 = 0.25 > 0.05, значит второй разряд = 0;
2^-3 = 0.13, там тоже получается 0;
2^-4 = там тоже 0;
2^-5 = 0.03125 < 0.05, поэтому четв. разряд = 1, и остаток = 0.01875;
2^-6 = 0.01562 < 0.01875, поэтому пятый разряд = 1, и остаток = 0,003125;
2^-7 = 0.0078125 > 0,003125, поэтому седьмой разряд = 0, и его я просто опускаю. Интересно, что надо было бы делать в том случае, если бы седьмой разряд вышел 1? Как тогда надо было бы округлять?
Значит, получилось число:
В (м) = 0.55 (10) = 0.100011.

Вот, пока и всё, что получилось...
Надеюсь, я правильно поняла, что надо делать: то есть, отдельно переводить в двоичную систему счисления порядки и мантиссы, а потом их надо перевести в обратный код (вот тут пока понять не могу, как... unsure.gif ), а потом, так же, отдельно -- складывать?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 22.1.2009, 21:44
Сообщение #6


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Цитата
эти числа , наверно в 10СС? или в 16СС?
Да, это числа в 10СС. То есть там по аналогии с предыдущим примером, заданы исходные значения в 10СС, только их надо перевести уже в двоичную систему счисления, а не в двоично-десятичную, и код для вычисления операции должен быть обратным (а не дополнительным). И ещё особенность в том, что надо провести всего одну операцию (сложение), и числа эти -- с плавающей запятой...
Вот так, в целом smile.gif.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 24.1.2009, 17:45
Сообщение #7


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(PolPoll @ 19.1.2009, 19:38) *

переводи в нормальный вид (без степени - как 0.000005 и 5000 в примерах) и переводи в 2СС


Цитата(Lady_Arvena @ 22.1.2009, 23:52) *

Надеюсь, я правильно поняла, что надо делать: то есть, отдельно переводить в двоичную систему счисления порядки и мантиссы, а потом их надо перевести в обратный код (вот тут пока понять не могу, как... unsure.gif ), а потом, так же, отдельно -- складывать?
Нет, не отдельно smile.gif

50=0.5* 10^2 =/= 0.5* 2 ^2 = 2


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 25.1.2009, 17:50
Сообщение #8


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Цитата(PolPoll @ 24.1.2009, 19:45) *

Нет, не отдельно smile.gif

50=0.5* 10^2 =/= 0.5* 2 ^2 = 2
Понятно smile.gif. Сделала по аналогии:
0.9 * 10^3 = 900 / = 0.9 * 2^3 = 7.2;
0.55 * 10^-1 =0.055 / 0.55 * 2^-1 = 0.275
А дальше, как? Надо переводить эти получившиеся числа (7.2 и 0.275) в двоичную систему счисления? Или делать что-то другое?

Сообщение отредактировал Lady_Arvena - 25.1.2009, 17:50
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 26.1.2009, 13:11
Сообщение #9


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



неравенство написано, что б показать, что если отдельно переводить порядок и мантиссу, получится совсем другое число. Потому что основание сиситем счистления - разное (10 и 2)

надо переводить
0.9 * 10^3 = 900 в 2СС
0.55 * 10^-1 =0.055


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 26.1.2009, 16:44
Сообщение #10


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Цитата(PolPoll @ 26.1.2009, 15:11) *

неравенство написано, что б показать, что если отдельно переводить порядок и мантиссу, получится совсем другое число. Потому что основание сиситем счистления - разное (10 и 2)

надо переводить
0.9 * 10^3 = 900 в 2СС
0.55 * 10^-1 =0.055
А smile.gif Понятно smile.gif. (Теперь дошло, что надо делать smile.gif).
Перевела:
900 - 512 (2^9) = 388 остаток, разряд = 1;
388-256 (2^8) = 132 остаток, разряд = 1;
132 - 128 (2^7) = 4 остаток, разряд = 1;
64 (2^6) => разряд = 0;
32 (2^5) => разряд = 0;
16 (2^4) => разряд = 0;
8 (2^3) => разряд = 0;
4 (2^2) => разряд = 1;
2 (2^1) => разряд = 0;
1 (2^0) => разряд = 0.
И получилось:
900 (10) = 1110000100 (2).
Так, как я переводила -- правильно?

Дело в том, что во всех примерах смотрю -- перевод начинается с числа 2^8 = 256... В то же время, сказано, что начинать перевод надо с максимального числа, которое "влазит" в этот диапазон -- до 900.
То есть, разрядность числа зависит от величины его модуля в десятичной СС? Если бы число было, скажем, 1300, то начинать вообще приходилось с 1024 = 2^10, и тогда разрядность числа в 2 СС была бы 11. Это так?

Дальше перевожу дробь. Тут тоже, соответственно, ищу с точностью до 10 разрядов...
У меня получилось:
0.055 (10) = 0. 000011100 (2).
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 27.1.2009, 8:59
Сообщение #11


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(Lady_Arvena @ 26.1.2009, 19:44) *

И получилось:
900 (10) = 1110000100 (2).
Так, как я переводила -- правильно?

То есть, разрядность числа зависит от величины его модуля в десятичной СС? Если бы число было, скажем, 1300, то начинать вообще приходилось с 1024 = 2^10, и тогда разрядность числа в 2 СС была бы 11. Это так?

Дальше перевожу дробь. Тут тоже, соответственно, ищу с точностью до 10 разрядов...
У меня получилось:
0.055 (10) = 0. 000011100 (2).
правильно

так

мало. надо еще один знак - надо 6 знаков начиная с первой 1
но там 0 вроде дальше?



ДАЛЬШЕ:
сдвигай первое число вправо, второе влево и считай на сколько разрядов надо сдвинуть, чтобы первая 1 оказалась сразу после "запятой"
полученное число переведешь в 2 СС - это и будет порядок


и раскажи про доп код для дробных чисел, что-то не помню как его делать... rolleyes.gif


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 27.1.2009, 18:17
Сообщение #12


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Цитата
мало. надо еще один знак - надо 6 знаков начиная с первой 1
но там 0 вроде дальше?
Да, вот теперь ещё пересчитала по-новой: будет такое число (если считать аж до 2^-11):
0.055 (10) = 0. 0000111000 (2).

Цитата
сдвигай первое число вправо, второе влево и считай на сколько разрядов надо сдвинуть, чтобы первая 1 оказалась сразу после "запятой"
полученное число переведешь в 2 СС - это и будет порядок

Не знаю, куда сдвигать первое число... huh.gif
900 (10) = 1110000100 (2). То есть, у него нет "запятой". Но, вот вроде, если записать так: 1110000100.0 -- то получается, что сдвигать надо в сторону этой точки -- и сдвигать надо на 2 разряда.
Если я делаю всё правильно, то получим число 11100001.0 и сдвиг будет на 2 разряда, значит порядок = 2.

Сдвигаю второе число (дробное) в левую сторону:
0. 0 0 0 0 111000 = 0. 111000
получается, до "запятой" надо убрать 4 нуля, значит, сдвинуть на 4 разряда...
Получается, порядок = 4.

Перевожу в 2СС:
2 = 0010;
4 = 0100;

Если там требуемая "разрядность модуля порядка" должна быть = 3, то получается, что так будет выглядеть:
2 = 010;
4 = 100.
Цитата
и раскажи про доп код для дробных чисел, что-то не помню как его делать...
Там код будет не дополнительный, там обратный надо делать.

У меня, вот, собственно только и написано:
Цитата
Для случая правильной дроби запись числа В в обратном коде имеет вид:
[А]ок = 0. B, если B>=0;
[А]ок = 1. (1-q^(-n) + B ), если B<0,
где (1-q^(-n)) = максимальная включенная граница диапазона изменения представляемых чисел, т.е. диапазон изменение чисел А определяется как (1 - q^(-n)) >= |A| >= 0.
Вот huh.gif... Только это и написано. Честно говоря, мало что отсюда понимаю (если не сказать "ничего")... unsure.gif

Сообщение отредактировал Lady_Arvena - 27.1.2009, 18:28
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 28.1.2009, 9:07
Сообщение #13


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(Lady_Arvena @ 27.1.2009, 21:17) *

Не знаю, куда сдвигать первое число... huh.gif
900 (10) = 1110000100 (2). То есть, у него нет "запятой". Но, вот вроде, если записать так: 1110000100.0 -- то получается, что сдвигать надо в сторону этой точки -- и сдвигать надо на 2 разряда.
Если я делаю всё правильно, то получим число 11100001.0 и сдвиг будет на 2 разряда, значит порядок = 2.

Сдвигаю второе число (дробное) в левую сторону:
0. 0 0 0 0 111000 = 0. 111000
получается, до "запятой" надо убрать 4 нуля, значит, сдвинуть на 4 разряда...
Получается, порядок = 4.

Перевожу в 2СС:
2 = 0010;
4 = 0100;
Сдвигать на все 10 знаков, порядок = 10 (как в 3 разряда вместить не знаю biggrin.gif

второе число - правильно, только порядок = -4 (отрицательный)


Далее надо в каком-то порядке разместить все эти части - мантисса, порядок и их знаки
в типе real, например
мантисса порядок знак-порядка знак-мантиссы
насколько помню...

или может в "естественном " порядке надо?
знак-мантиссы мантисса знак-порядка порядок


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 28.1.2009, 15:33
Сообщение #14


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Цитата(PolPoll @ 28.1.2009, 11:07) *

Сдвигать на все 10 знаков, порядок = 10 (как в 3 разряда вместить не знаю biggrin.gif
Эм-ммм... Вот этого, пока, всё-таки понять не получается.
Пусть есть целое число в 2СС...
1110000100 и как его сдвигать? Т.е., 0000000000. 1110000100, или просто это число, как все нули перезаписать? unsure.gif
То есть, если число всё состоит из 10 разрядов, то как производить сдвиг?
Цитата
второе число - правильно, только порядок = -4 (отрицательный)

А, если сдвигаем дробь, то порядок получится отрицательный, с этим поняла smile.gif.
Цитата
Далее надо в каком-то порядке разместить все эти части - мантисса, порядок и их знаки
в типе real, например
мантисса порядок знак-порядка знак-мантиссы
насколько помню...

или может в "естественном " порядке надо?
знак-мантиссы мантисса знак-порядка порядок
Вот, насчёт этого я ничего не знаю sad.gif... Вообще ничего, пыталась поискать, но ничего пока не могу найти. Может, найдётся.
Там у меня нет привязки к каким-то конкретным типам, там просто тема "Арифметика с числами с плавающей точкой", ну, и с целью все эти примеры научиться считать.
Не знаю, может ,в естественном порядке можно...
Вот что про это удалось отрыть:
Цитата
Операция сложения чисел предполагает наличие одинаковых масштабов
складываемых величин. Для случая представления чисел с плавающей точкой это
предполагает наличие одинаковых порядков у операндов, подлежащих
суммированию. Поэтому при выполнении операции сложения чисел с плавающей
точкой в общем случае должно быть реализовано три этапа:
− выравнивание порядков;
− сложение мантисс операндов, имеющих одинаковые порядки ;
− определение нарушения нормализации и при необходимости её устранение.
Негусто, но всё что есть smile.gif

Сообщение отредактировал Lady_Arvena - 28.1.2009, 15:36
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 28.1.2009, 15:56
Сообщение #15


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(Lady_Arvena @ 28.1.2009, 18:33) *

Эм-ммм... Вот этого, пока, всё-таки понять не получается.
Пусть есть целое число в 2СС...
1110000100 и как его сдвигать? Т.е., 0000000000. 1110000100, или просто это число, как все нули перезаписать? unsure.gif
То есть, если число всё состоит из 10 разрядов, то как производить сдвиг?

Давай пример из 10 СС smile.gif

12345 = 1234,5 * 10^1 = ... = 0.12345 *10^5


согласна, что равенство?

Вот тоже самое и в 2СС, только такое смещение это степень двойки, а не 10 smile.gif

1110000100(2СС) = 0.1110000100(2СС) * 2^10(10СС) = 0.1110000100 * 2^1010(2СС)


Далее
Поскольку в мантиссе могут быть только 6 битов (у тебя условие такое в задаче), то последние значения отбрасываем = округляем число

1110000100 = 0.1110000100 * 2^10 округляем до 0.111000(2) * 2^1010 (2) и порядок переводим в 2СС

+ 0.111000(2) * 2^+1010
0(+) 111000(мантисса) 0(+) 1010(порядок)


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 28.1.2009, 16:03
Сообщение #16


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Второе число
0.0000111000 (2СС) = 0.111000(2CC) *2^-4(10CC) = + 0.111000(2CC) *2^-0100(2CC)

0(+) 111000(мантисса) 1(-) 0100(порядок) (тоже 4 разряда для порядка возьму, чтоб одинаково было...)




здесь тоже присутствует округление - кстати там после 3 нулей не 1? может округлить в бОльшую сторону?


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 28.1.2009, 16:16
Сообщение #17


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Цитата(PolPoll @ 28.1.2009, 17:56) *

Давай пример из 10 СС smile.gif

12345 = 1234,5 * 10^1 = ... = 0.12345 *10^5
согласна, что равенство?

Вот тоже самое и в 2СС, только такое смещение это степень двойки, а не 10 smile.gif

1110000100(2СС) = 0.1110000100(2СС) * 2^10(10СС) = 0.1110000100 * 2^1010(2СС)
Да. Теперь понятно smile.gif.
Цитата
Далее
Поскольку в мантиссе могут быть только 6 битов (у тебя условие такое в задаче), то последние значения отбрасываем = округляем число

1110000100 = 0.1110000100 * 2^10 округляем до 0.111000(2) * 2^1010 (2) и порядок переводим в 2СС

+ 0.111000(2) * 2^+1010
0(+) 111000(мантисса) 0(+) 1010(порядок)
да. Теперь вижу. Действительно, так... Хм, может быть, перевела я неправильно? 900 (10СС) в 2СС? Хотя, сейчас пересчитывала, вроде правильно.
Значит, возьмём 4 разряда, всё равно по-другому не получается smile.gif.
Цитата
здесь тоже присутствует округление - кстати там после 3 нулей не 1? может округлить в бОльшую сторону?
Нет, вроде, там после третьего нуля (в конце) идёт ещё один 0...
0.00001110000, если считать до 2^11.

Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 2.2.2009, 15:22
Сообщение #18


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



PolPoll, а что делать дальше?
Я имею в виду, как дальше складывать эти числа?
Значит, получились числа:
900 (10) = 1110000100 (2)
0.055 (10) = 0. 000011100 (2)
.
потом, по заданию, надо сформировать для этих мантисс и порядков, переведённых в 2СС, прямые коды.
Потом -- сформировать обратные;
потом эти числа сложить (используя обратные коды);
а потом снова результат представить в прямом коде и в нормализованной форме.

Как это сделать?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 2.2.2009, 15:49
Сообщение #19


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(Lady_Arvena @ 2.2.2009, 18:22) *

PolPoll, а что делать дальше?
Я имею в виду, как дальше складывать эти числа?
Значит, получились числа:
900 (10) = 1110000100 (2)
0.055 (10) = 0. 000011100 (2)
.
потом, по заданию, надо сформировать для этих мантисс и порядков, переведённых в 2СС, прямые коды.


Цитата(PolPoll @ 28.1.2009, 18:56) *

Далее
Поскольку в мантиссе могут быть только 6 битов (у тебя условие такое в задаче), то последние значения отбрасываем = округляем число

1110000100 = 0.1110000100 * 2^10 округляем до 0.111000(2) * 2^1010 (2) и порядок переводим в 2СС

+ 0.111000(2) * 2^+1010
0(+) 111000(мантисса) 0(+) 1010(порядок)


Цитата(PolPoll @ 28.1.2009, 19:03) *

Второе число
0.0000111000 (2СС) = 0.111000(2CC) *2^-4(10CC) = + 0.111000(2CC) *2^-0100(2CC)

0(+) 111000(мантисса) 1(-) 0100(порядок) (тоже 4 разряда для порядка возьму, чтоб одинаково было...)



Цитата(Lady_Arvena @ 2.2.2009, 18:22) *

Потом -- сформировать обратные;
Понятия не имею rolleyes.gif

Цитата(Lady_Arvena @ 2.2.2009, 18:22) *

потом эти числа сложить (используя обратные коды);
приводишь оба числа к одному порядку - большему (+1010(2))
от второго число при этом 0 останется

число первое + 0 = первое число biggrin.gif





--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 8.2.2009, 11:26
Сообщение #20


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Цитата(PolPoll @ 2.2.2009, 17:49) *
Так. Вот это я сделала (раньше не могла из-за сессии blush.gif )
То есть тоже вот так получилось:
Первое число: + 0.111000(2) * 2^+1010
0(+) 111000(мантисса) 0(+) 1010(порядок)

Второе число: 0(+) 111000(мантисса) 1(-) 0100(порядок)
Только не могу понять, зачем тут нули? Вот эти, перед плюсом: 0(+) 111000?

То есть, получили мантиссы и порядки как бы "заново".

А потом, ты говорила:
Цитата
Далее надо в каком-то порядке разместить все эти части - мантисса, порядок и их знаки
в типе real, например
мантисса порядок знак-порядка знак-мантиссы
насколько помню...
Честно говоря, ничего не могу об этом найти... sad.gif
Это надо делать сразу после того, как перевели числа? Или уже для сформированных кодов (обратного и прямого)
Цитата(PolPoll @ 2.2.2009, 17:49) *

приводишь оба числа к одному порядку - большему (+1010(2))
от второго число при этом 0 останется
Вот, если честно, про это опять не поняла smile.gif. Как это приводить?
И ещё вот, наша что-то по поводу сложения чисел с плавающей точкой:
Код
1) числа приводятся к одинаковому значению экспоненты;
2) складываются получившиеся мантиссы;
3) результат нормализуется
У нас в примере надо делать первый пункт? (А то что-то не очень могу понять, как конкретно каждый пункт делается... huh.gif )
вот smile.gif, можно сказать, совсем практически запуталась. Объясни пожалуйста, как сложить эти числа.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

3 страниц V  1 2 3 >
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 23.5.2012, 4:03