Зачем эти Балин Bsd числа?

Тема в разделе "WASM.ASSEMBLER", создана пользователем ajak, 11 дек 2007.

  1. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Не понимаю зачем их ввели, для чего. Упакованные, неупакованные. Что в них легче считать? Может я их назвал непраильно - bsd , ну думаю вы поняли двоично-десятичные которые.
     
  2. Noble Ghost

    Noble Ghost New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2004
    Сообщения:
    204
    Адрес:
    Russia
    bcd, это раз.
    арифметика больших чисел, это два.
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    на современных компах все инструкции с bcd страшно тормозные, а в 64-битных режимах и вовсе не поддерживаются, это три ;)
    анахронизм, одним словом. единственная полезная вещь это fbstp - выгрузка из вещественного формата в упакованный bcd для преобразования числа в строку
     
  4. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Дык зачем они тогда они вводились? Можно ли их считать пережитком прошлого.
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    ajak

    Всё очень просто. В давние-давние времена, когда компутеры были большими, а программы для них -- маленькими, на преобразование чисел из двоичной в десятичную систему и обратно уходила масса процессорного времени (очень дорогого, заметим, времени). В научно-технических задачах это роли не играло: они получали на входе пару чисел, полдня их мурыжили (в двоичном виде), а потом выдавали на печать результат -- тоже пару чисел.

    А вот с экономическими задачами дело обстояло с точностью до наоборот: они получали на входе огромные массивы чисел, которые в подавляющем большинстве случаев вовсе не требовали каких-либо расчётов, ну а в крайнем случае -- самых простых (+-*/). Поэтому быстрее было выполнять над ними операции прямо в десятичном виде, без преобразования в двоичные и обратно. Ну а для уменьшения объёмов памяти, занимаемых такими числами, их хранили в упакованном виде -- по четыре бита на цифру (преобразование в символьное кодирование выполнялось очень быстро в этом случае).

    Правда, на мэйнфреймах команды двоично-десятичной арифметики были отнюдь не такими убогими, как на ПК. Все четыре основных операции (+-*/) выполнялись над упакованными десятичными числами со знаком длиной от 1 до 16 байт (т.е. от 1 до 31 значащей цифры + полубайт знака). Были и вспомогательные команды для упаковки-распаковки таких чисел, пересылки, преобразования в двоичные и из двоичных.

    Если есть желание -- можете глянуть, например, систему команд IBM System/370 (русский перевод книжки "Принципы работы системы IBM/370" есть в Виртуальном компьютерном музее -- www.computer-museum.ru).
     
  6. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Длинную арифметику хорошо в БЦД делать, значительно упрощается и ускоряется загрузка\выгрузка результатов. Правда за это приходится платить несколько большим расходом памяти на хранение чисел.