![]() Главная страница Случайная лекция ![]() Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика ![]() Мы поможем в написании ваших работ! |
Сдвиг и округление
Преобразование двоичного формата в ASCII-формат Преобразование ASCII-формата в двоичный формат Двоично-десятичный формат (BCD) В предыдущем примере деления в ASCII-формате было получено частное 00090204. В случае, если сжать это значение, сохраняя только правые цифры каждого байта, то получим 0924. Такой формат называется двоично-десятичным (BCD — Binary Coded Decimal) (или упакованным). Он содержит только десятичные цифры от 0 до 9. Длина двоично-десятичного представления в два раза меньше ASCII-представления. Заметим, однако, что десятичное число 0924 имеет основание 10 и. будучи преобразованным в основание 16 (то есть, в шест, представление), даст шест.039С. Можно выполнять сложение и вычитание чисел в двоично-деся-i ичном представлении (BCD-формате).
Для этих целей имеются две корректирующих команды: + DAA (Decimal Adjustment for Addition — десятичная коррекция для сложения) •ф DAS (Decimal Adjustment for Subtraction — десятичная коррекция для вычитания) Обработка полей также осуществляется по одному байту за одно выполнение. Выполнение арифметических операций над числами в ASCII или BCD форматах удобно лишь для коротких полей. В большинстве случаев для арифметических операций используется преобразование в двоичный формат. Практически проще преобразование из ASCII-фор мата непосредственно в двоичный формат, чем преобразование из ASCII- в BCD-формат и, затем, в двоичный формат: Метод преобразования базируется на том, что ASCII-формат имеет основание 10, а компьютер выполняет арифметические операции только над числами с основанием 2. Процедура преобразования заключается в следующем: 1. Начинают с самого правого байта числа в ASCII-формате и об 2.Удаляют тройки из левых шест.цифр каждого ASCII-байта. 3.Умножают ASCII-цифры на 1, 10, 100 (шест. 1, А, 64) и так далее Для того, чтобы напечатать или отобразить на экране арифметический результат, необходимо преобразовать его в ASCII-формат. Данная операция включает в себя процесс обратный предыдущему. Вместо умножения используется деление двоичного числа на 10 (шест.ОА) пока результат не будет меньше 10. Остатки, которые лежат в границах от 0 до 9, образуют число в ASCII-формате.
Рассмотрим процесс округления числа до двух десятичных знаков после запятой. В случае, если число равно 12,345, то необходимо прибавить 5 к отбрасываемому разряду и сдвинуть число вправо на один десятичный разряд: Число: 12,345 Плюс 5: +5 - Округленное число: 12,350 = 12,35 В случае, если округляемое число равно 12,3455, то необходимо прибавить 50 и сдвинуть на два десятичных разряда. Для 12,34555 необходимо прибавить 500 и сдвинуть на три десятичных разряда: 12,3455 12,34555 +50 +500 --- 12,3505 = 12,35 12,35055 = 12,35 К числу, имеющему шесть знаков после запятой, необходимо прибавить 5000 и сдвинуть на четыре десятичных разряда и так далее. Поскольку данные представляются в компьютере в двоичном виде, то 12345 выглядит как шест.3039. Прибавляя 5 к 3039, получим ЗОЗЕ, что соответствует числу 12350 в десятичном представлении. Пока все хорошо. Но вот сдвиг на одну двоичную цифру дает в результате шест. 181F, или 1675 — то есть, сдвиг на одну двоичную цифру просто делит число пополам. Но нам необходим такой сдвиг, который эквивалентен сдвигу вправо на одну десятичную цифру. Такой сдвиг можно осуществить делением на 10 (шест. А): Шест.ЗОЗЕ : Шест.А = 4D3 или дес.1235 Преобразование шест.4ОЗ в ASCII-формат дает число 1235. Теперь остается лишь вставить запятую в правильную позицию числа 12,35, и можно выдать на экран округленное и сдвинутое значение. Таким образом можно округлять и сдвигать любые двоичные числа. Для трех знаков после запятой необходимо прибавить 5 и разделить на 10, для четырех знаков после запятой: прибавить 50 и разделить на 100. Возможно вы заметили модель: фактор округления (5, 50, 500 и так далее) всегда составляет половину фактора сдвига (10, 100, 1000 и так далее). Конечно, десятичная запятая в двоичном числе только подразумевается.
Дата добавления: 2014-03-11; просмотров: 539; Нарушение авторских прав ![]() Мы поможем в написании ваших работ! |