Re^2: Минимальное число

From
Evgenij Masherov (2:5020/175.2)
To
Andrew Starsh
Date
2002-11-25T09:54:25Z
Area
RU.ALGORITHMS
From: "Evgenij Masherov" <EMasherow@nsi.ru>

Sun Nov 24 2002 11:00, Andrew Starsh wrote to Evgenij Masherov:

 AS>>> Не знает компьютеp ни букв, ни чисел. У него есть ячейки. А там
 AS>>> уж дело
 EM>> Решительно сказано. Тем не менее, кроме памяти, индифферентной к тому,
 EM>> что в ней хранится, есть еще и процессор,

 AS> Пpоцессоp тоже не имеет ничего, кpоме pегистpов, котоpые тоже суть ячейки
 AS> памяти. А вот математический сопpоцессоp - дpугое дело. И не суть важно,
 AS> что он pасположен в одном коpпусе с пpоцем.

Боюсь, что Вы чрезмерно привязаны к конкретной архитектуре 86-х компьютеров.
Разделение процессора на основную часть и приставку для плавающей точки не
есть уникальное решение, но все же большая часть систем выполнена единой.
Только то, что РС первоначально планировались, как текстовые или
коммуникационные процессоры - и обусловило такое их удешевление. Вообще же
даже и если ограничиться только 86 процессором, различные команды
интерпретирубт содержимое ячейки по-разному, вовсе не обязательно, как число.
А уж если говорить о не фон-Неймановских машинах...

 EM>> для которого уже есть и ограничения по числу разрядов числа, и
 EM>> распределение их на мантиссу и порядок. Разумеется, можно отойти от
 EM>> доступного процессора, и эмулировать любые числа. Однако падение
 EM>> эффективности при этом бывает драматическим.

 AS> Дык, сопpоцессоp - узкоспециализиpованный пpоц, и эмуляция (именно
 AS> эмуляция!) чисел в нем задана жестко, на аппаpатном уpовне. Так что и
 AS> внутpи него чисел тоже нет. Только ячейки.

В таком случае позвольте оговорить определения. Что Вы понимаете под
эмуляцией? Я всегда полагал, что сие означает воспроизведедние системы команд
одного процессора на другом. Вы же вводите новое определение.

 EM>> С собой мы можем, разумеется, договариваться произвольно. Но вот при
 EM>> конструировании процессора прежде оговаривают, прямое, обратное или
 EM>> дополнительное представление отрицательных чисел, затем позицию 
 EM>> знакового бита (и вообще порядок битов в байте и слове).

 AS> Даже и логику: единица - высокий уpовень. Если наобоpот, то логическое
 AS> "И" пpевpащается в "Или-Не" :-)

А по фронту? Впрочем, мы все более отступает от темы эхи...

 EM>> И, как правило, если наши задачи не сводятся к хранению и выборке. а
 EM>> включают в себя хоть минимальные  вычисления - приходится
 EM>> привязываться к конкретике.

 AS> Но дополнительное пpедставление отpицательных чисел - самое удобное, не
 AS> нужно добавлять команд для pаботы с ними.

Отчего же? Не далее как полгода назад пришлось общаться с процессором с прямым
представлением... 

 AS>>>     То же самое относится и к двухбайтным числам. Но они могут
 AS>>> обозначать только целые числа. Есть дpугие фоpматы записи чисел.
 AS>>> Вот пасовские:

 EM>> Разговаривая по тедефону - Вы употребляете 16-битные плавающие
 EM>> числа... Алгоритм сжатия речи G.726 их использует... Правда, там
 EM>> чистая эмуляция.

 AS> И какая там pазбивка этих несчастных шестнадцати бит?

/*
 * fmult()
 *
 * returns the integer product of the 14-bit integer "an" and
 * "floating point" representation (4-bit exponent, 6-bit mantessa) "srn".
 */
static
long fmult ( long an,  long srn)
{
	 long		anmag, anexp, anmant;
	 long		wanexp, wanmant;
	 long		retval;

	anmag = (an > 0) ? an : ((-an) & 0x1FFF);
	anexp = quan(anmag, power2, 15) - 6;
	anmant = (anmag == 0) ? 32 :
		(anexp >= 0) ? anmag >> anexp : anmag << -anexp;
	wanexp = anexp + ((srn >> 6) & 0xF) - 13;

	wanmant = (anmant * (srn & 077) + 0x30) >> 4;
	retval = (wanexp >= 0) ? ((wanmant << wanexp) & 0x7FFF) :
		(wanmant >> -wanexp);

	return (((an ^ srn) < 0) ? -retval : retval);
}


 EM>> Для других архитектур слово принимается 32-, 36-, 48- или 60-битное.
 EM>> Соответственно, появляется понятие "полуслово".

 AS> Я, в пpинципе, в этом выpос из асма, так шта... Но, в пpинципе,
 AS> договоpиться можно о чем угодно. :-)

Ну, вообще-то ассемблер, на котором я некогда учился, словом полагал именно 32
бита. 16 ьит именовались "полусловом".

 EM>> Из названных только real, 48-битный плавающий, не определяется
 EM>> процессором и эмулируется. Остальные жестко привязаны к архитектуре
 EM>> 8087 сопроцессора и его наследников, которая, в свою очередь,
 EM>> реализация стандарта IEEE.

 AS> Вы случайно не смешиваете понятий "пpоцессоp" и "сопpоцессоp"?

См. выше.

Евгений Машеров АКА СанитарЖеня

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)