Вопрос № 154413: Здравствуйте! Задумал отобразить численный результат с плавающей точкой (уже как бы полученный в арифмет. сопроцессоре). Программа <u>еще не закончена как положено,</u> потому что столкнулся вот с каким местом. Я его <b>пометил;!!!!!!!!!...
Вопрос № 154426: Здравствуйте всем!!! я неочень плохо изучала на языке ассемблера! 1.сумма чисел вида(х*х-х), начиная с 2, для заданного числа циклов. 2.факториал заданного
числа(не более 6) ...Вопрос № 154427: Здравствуйте всем!!! не очень плохо знать на языке ассемблера 1. задание 2*x*x*x+3*y*y, если x<y 3*x*x+2*y*y*y, если x<y 3*x*x*x+12, если x=y 2. задание x*x+y*y+3*x, если x-y=0 (x-y)*(x-y)+2*x, если x...Вопрос № 154439: Здравствуйте уважаемые эксперты! Объясните пожалуйста мне действительные числа в сопроцессор
е. В книге пишет: «1) Рассмотрим, как представляется число 7,375 при использовании одинарной точности. (понимаю) 2) Во-первых, заметим, что 7,375=4+...
Вопрос № 154.413
Здравствуйте! Задумал отобразить численный результат с плавающей точкой (уже как бы полученный в арифмет. сопроцессоре).
Программа еще не закончена как положено, потому что столкнулся вот с каким местом. Я его пометил;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! После округления цифры «4» получается «3». Т.е. у меня должно было быть: 0.34 * 10 = 3.4 округляем и «3» выводим 3.4-3=0.4 0.4* 10 = 4 округляем и «4» выводим Но вот здесь «4» округляется к «3»!!!!!!!!!!!!!!!!!! Там
хвостик какой-то появляется, т.е. ;{4-4 = -3.4694469519536142e-18} Я в коде это пометил. Как можно с этим бороться??
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Бартосик Феликс Михайлович! А это издержки арифметики с плавающей точкой... Никогда нельзя расчитывать на точное совпадение! Я бы все же рекомендовал использовать обычное округление до ближайшего, Зная число знаков после запятой, умножаем на 10 в соответствующей степени и выводим последовательность BCD командой FBSTP Далее преобразовываем в строку, вставив в нужном месте точку. По-моему, так значительно проще.
Приложение:
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 15.12.2008, 11:56
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 238670 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Спасибо, видимо так и буду делать.
Вопрос № 154.426
Здравствуйте всем!!! я неочень плохо изучала на языке ассемблера! 1.сумма чисел вида(х*х-х), начиная с 2, для заданного числа циклов. 2.факториал заданного числа(не более 6)
Приложение:
Отправлен: 15.12.2008, 12:15
Вопрос задала: Miwka (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Miwka! Задание 1 Заметим, что x*x-x = x*(x-1). Пусть max - заданное число циклов, тогда
Код:
mov cx, 2 ;x xor bx, bx ;сумма calc_loop: ;цикл mov ax, cx ;x dec ax ;x-1 mul cx ;x*(x-1) = x*x - x add bx, ax ;накапливаем сумму inc cx ;x=x+1 cmp
cx, max ;x<=max jbe calc_loop ;на повтор
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 16.12.2008, 11:53
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 238761 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: спасибо большое! я немножко поняла! еще раз спасибо!!!
Вопрос № 154.427
Здравствуйте всем!!! не очень плохо знать на языке ассемблера 1. задание 2*x*x*x+3*y*y, если x<y 3*x*x+2*y*y*y, если x<y 3*x*x*x+12, если x=y 2. задание x*x+y*y+3*x, если x-y=0 (x-y)*(x-y)+2*x, если x-y>0 (y-x)*(y-x)+x, если x-y<0 мне надо сдать на экзамен. заранее спасибо!!!!
Приложение:
Отправлен: 15.12.2008, 12:27
Вопрос задала: Miwka (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Miwka! Задание 1 Предположу, что 2*x*x*x+3*y*y, если x>y Если не так, то чуть-чуть правим в программе...
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 16.12.2008, 11:33
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 238759 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 154.439
Здравствуйте уважаемые эксперты! Объясните пожалуйста мне действительные числа в сопроцессоре. В книге пишет: «1) Рассмотрим, как представляется число 7,375 при использовании одинарной точности. (понимаю) 2) Во-первых, заметим, что 7,375=4+2+1+1/4+1/8. (понимаю) 3) Поэтому представление этого числа в двоичной форме имеет следующий вид: 111.011b=1010*1.11011b. (не понимаю) 4) Обратите внимание на то, что и основание системы счисления, и порядок, в который оно возводится, записаны в двоичное системе.
( понимаю) 5) Итак, хранимая мантисса числа будет равна 11011b, а порядок 2+127=129, в двоичной форме 10000001b. (не понимаю) 6) Поскольку число положительное знаковый бит равен нулю. (понимаю)» Объясните пожалуйста: 1) Почему: 1010*1.11011b? 5) Почему: мантисса числа будет равна 11011b, а порядок 2+127=129? Огромное спасибо зарание!
Отвечает: Лысков Игорь Витальевич
Разберем на примере вещественного числа одиночной точности (32 бита) Итак, условно нарисуем, как seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm,где s - бит знака. Тут все понятно 0/1 означает +/-; eeeeeeee - 8 бит порядка. Для удобства принято следующее: Чтобы не иметь дело с отрицательными величинами, порядок задается в смещенной форме - он равен истинному порядку, увеличенному на значение смещения 127. В нашем примере получается 2+127=129 mmm...mm - мантисса. Мантисса хранится в нормализованном виде, считается,
что целой частью числа является 1, все остальное - дробная часть И это еще не все! Эта самая целая часть не хранится, а подразумевается (раз она всегда 1)! В нашем примере: 111.011 - ненормализованное число, нормализованное - 1.11011, порядок 2 (надо будет потом умножить на 2 в степени равной порядку), порядок с учетом смещения 2+127=129=10000001b, реально хранимая мантисса - 11011 (без целой части) Т.о. имеем число 0 10000001 11011000
000000000000000b
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 15.12.2008, 16:05
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 238688 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.