Важная информация

User Tag List

Страница 1 из 6 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 59

Тема: Разрядность мантиссы в различных языках

  1. #1
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,061
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Разрядность мантиссы в различных языках

    Вот такой вопрос на StackOverflow-RU
    http://ru.stackoverflow.com/questions/513132/
    благодаря которому имеем способ обнаружения разрядности мантиссы.
    Код:
    REAL Y=2.0, X=1.0, E=1.0;
    DO (E=E/2.0; Y=X+E;
    ) WHILE (Y<>1.0)
    Предлагаю применить этот алгоритм для получения точности чисел в различных диалектах Бейсика и других языков, используемых на советских компьютерах.

    Для Бейсик-Вильнюс на УКНЦ (кассета ПЗУ):
    Код:
    10 Y=2.0
    11 X=1.0
    12 E=1.0
    20 E=E/2.0
    25 Y=X+E
    30 N=N+1
    40 IF Y<>1.0 GOTO 20
    50 PRINT N
    Результат -- 25
    Последний раз редактировалось nzeemin; 20.05.2016 в 11:33.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master
    Регистрация
    12.04.2009
    Адрес
    Одесса
    Сообщений
    617
    Спасибо Благодарностей отдано 
    311
    Спасибо Благодарностей получено 
    82
    Поблагодарили
    60 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию


    Бейсик-П версия 1.1 Электроника 85 (эмулятор)
    25
    Последний раз редактировалось anasana; 20.05.2016 в 14:46.

  4. #3
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,061
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    УКНЦ дисковый Бейсик (DBAS.SAV, ВИЛЬНЮС 1988.09.28):
    Последний раз редактировалось nzeemin; 20.05.2016 в 12:33.

  5. #4
    Veteran
    Регистрация
    06.02.2009
    Адрес
    Кемерово
    Сообщений
    1,327
    Спасибо Благодарностей отдано 
    57
    Спасибо Благодарностей получено 
    162
    Поблагодарили
    129 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Бейсик-Корвет 2.0 (из ПЗУ, эмулятор)
    Нажмите на изображение для увеличения. 

Название:	Untitled1.jpg 
Просмотров:	353 
Размер:	16.9 Кб 
ID:	57220

    25
    ПК8010 "Корвет"+ExtRom+AY, Atari 65XE+SDrive, Дельта-С(52ИС)+AY, Scorpion ZS 1024+SMUC

  6. #5
    Guru Аватар для MiX
    Регистрация
    13.12.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,065
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    74
    Поблагодарили
    62 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    nzeemin, Не знаю в тему или нет, есть две программки мантиссы из восьмеричного и десятичного числа, возможно пригодятся.

    Здесь.

  7. #6
    Member Аватар для liberation
    Регистрация
    02.05.2010
    Адрес
    г. Запорожье, Украина
    Сообщений
    57
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Бейсик 2.0 ПК-01 "Львов" (эмулятор)
    25
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	snapshot10.jpg 
Просмотров:	123 
Размер:	21.5 Кб 
ID:	57223  

  8. #7
    Activist
    Регистрация
    16.11.2015
    Адрес
    г. Москва
    Сообщений
    233
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    33 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Только оно считает не размер поля мантиссы, а число значащих разрядов. Потому что на x86 дает 24, хотя там 23 и знаковый бит.

  9. #8
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Для Бейсик-Вильнюс на УКНЦ:
    Результат -- 25
    В УКНЦ Бейсик-Вильнюс пользуется командами FIS, а они используют вещественные числа одинарной точности. Мантисса в эмуляторе FIS всегда нормализована, т.е. самый старший разряд всегда равен единице и он не представляется. Всего в мантиссе 23 явных разряда и один старший скрытый, итого 24 разряда. В этом алгоритме небольшой недочет, к N прибавляется единица на последней итерации, когда мантисса уже вылезла из своей разрядности.

  10. #9
    Activist
    Регистрация
    16.11.2015
    Адрес
    г. Москва
    Сообщений
    233
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    33 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А я что-то не пойму: у интеля и дека мантисса сделана почти одинаково. 23 явных разряда и 1 скрытый. Скрытый разряд и экспонента у нас остаются одинаковыми (мы прибавляем к единице число, меньшее единицы) и по всем видимым разрядам мантиссы бежит единичка.
    У Интела мантисса 1.0 =< (1.[23 разряда]) < 2.0 и смещение экспоненты 127. Выглядит это так:

    Скрытый текст


    3FC00000
    3FA00000
    3F900000
    3F880000
    3F840000
    3F820000
    3F810000
    3F808000
    3F804000
    3F802000
    3F801000
    3F800800
    3F800400
    3F800200
    3F800100
    3F800080
    3F800040
    3F800020
    3F800010
    3F800008
    3F800004
    3F800002
    3F800001
    3F800000
    [свернуть]


    У Дека мантисса 0.5 =< (0.1[23 разряда]) < 1.0 и смещение экспоненты 128. Выглядеть должно как-то так:

    Скрытый текст


    40C00000
    40A00000
    40900000
    40880000
    40840000
    40820000
    40810000
    40808000
    40804000
    40802000
    40801000
    40800800
    40800400
    40800200
    40800100
    40800080
    40800040
    40800020
    40800010
    40800008
    40800004
    40800002
    40800001
    40800000
    [свернуть]


    Так почему на Интеле результат 24, а на Деке 25?

  11. #10
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от avivanov76 Посмотреть сообщение
    Так почему на Интеле результат 24, а на Деке 25?
    Подождите немного, ближе к вечеру выложу результаты по DEC-у. Довольно интересные.

    - - - Добавлено - - -

    Для работы с числами с плавающей запятой в PDP-11 применяются команды FIS и FP-11.

    Команды FIS используют только вещественные числа одинарной точности и имеют только четыре команды - FADD (сложение), FSUB (вычитание), FMUL (умножение) и FDIV (деление). Эти команды реализованы на PDP-11 35/40 (блок KE11-F) и LSI-11 (блок KEV-11). Соответственно, есть эти команды на "Электронике-60", как функциональном аналоге LSI-11. В процессорах серии 1801/1806 эти команды на аппаратном уровне не реализованы, но процессоры 1801ВМ2 и 1806ВМ2 содержат аппаратную поддержку для программной эмуляции команд FIS. Суть этой поддержки состоит в том, что при исполнении команд FIS процессор производит прерывание в HALT-режим по вектору SEL010, и данный вектор содержит адрес программы эмуляции команд FIS обычными командами микропроцессора. Данные эмуляторы FIS есть в УКНЦ, ДВК на базе платы МС1201.02 и в Союз-Неон ПК-11/16.

    Команды FP-11 содержат более большой набор команд и могут работать с вещественными числами как одинарной, так и двойной точности. Реализованы во многих системах PDP-11, например на базе процессора J-11. В отечественной схемотехнике это сборки 1811 (аналог F-11), 1831 (аналог J-11) и сопроцессор 1801ВМ4, работающий в паре с 1801ВМ3.

    Вещественные числа одинарной точности представляются следующим образом:
    15 14 07 06 00
    s Порядок Старшая часть мантиссы
    15 00
    Младшая часть мантиссы

    S - знаковый разряд, 1 - это минус. Порядок задается числом от 0 до 255, при этом порядок равный нулю используется для задания вещественного нуля, в иных случах он интерпретируется как 2(порядок-128), т.е. порядок может принимать значения от 2-127 до 2+127, или от 5,877471761E-39 до 1,7014118326E+38. Мантисса – 23 разряда дробной части с двоичной запятой слева. Мантисса всегда нормализована, то есть самый старший разряд справа от двоичной запятой всегда равен единице, является скрытым (избыточным) и он интерпретируется как 2–1. Остальные разряды мантиссы интерпретируются от 2–2 до 2–24. Соответственно, мантисса может принимать значения от 0.5 до 0.99999994. Таким образом вещественное число представляется формулой знак*2(порядок-128)*мантисса. По абсолютной величине самое малое число составляет 2.9387358805E–39, а самое большое 1,7014117311E+38.

    Вещественные числа двойной точности уже состоят из 64 разрядов, при этом размер порядка остался таким же, а мантисса соответственно увеличена на 32 разряда, итого 55 разрядов. Таким образом диапазон представления остался таким же, а точность увеличена.

    Для тестов удобно использовать языки высокого уровня Паскаль и Си для операционной системы RT-11. Язык Паскаль использует для операций с числами с плавающей запятой команды FIS (в Паскале это тип real), а язык Си команды FP-11 (тип float для чисел одинарной точности и тип double для чисел двойной точности). В данных языках предусмотрено, что на запускаемых системах могут отсутствовать команды FIS и FP-11 и при линковке к исполнимым модулям добавляются эмуляторы данных команд. При отсутствии команд возникает прерывание TRAP10 и программы при старте с помощью системного запроса .TRPSET перехватывают вектор 10. Если же перед запуском программы изменить вектор 10 с помощью команды D=10 12,0, то при первом применении команд FIS/FP-11 произойдет выход в пульт. Так можно узнать, есть ли аппаратная поддержка этих команд.

    Далее будут тестовые программы на Паскале и Си и результаты их работы.
    Последний раз редактировалось Alex_K; 23.05.2016 в 19:42.

Страница 1 из 6 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Зарубежная литература, на иностранных языках
    от Viktor2312 в разделе Техническая литература
    Ответов: 13
    Последнее: 31.03.2019, 09:47
  2. Тест различных эмуляторов AY
    от Vitamin в разделе Эмуляторы
    Ответов: 3
    Последнее: 11.04.2015, 17:58
  3. Подскажите пожалуйста, На каких языках пишутся игры.
    от sevol в разделе Программирование
    Ответов: 168
    Последнее: 14.01.2011, 15:42
  4. Схемы WAIT для различных клонов ZX Spectrum
    от ARTi в разделе Несортированное железо
    Ответов: 0
    Последнее: 28.04.2008, 16:57

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •