Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Дробные численные данные




M-1

Беззнаковые целые численные данные.

Десятичная и двоичная системы счисления позиционные однородные являются формальным способом записи количества. Методы преобразования чисел из одной системы в другую изменяют только форму записи целых чисел, в которой сохраняется информация о количестве

Информация (количество) в записи (m) -разрядного целого десятичного числа

 

(2.1) N= ∑ aidi = am-110m-1 + am-210m-2 + ….+ a110 + a0=

i=0

= (…(( 0+am-1 )10 + am-2 )10 +.. + a1)10 + a0

где ai -двоично-десятичная цифра, d=10, m-количество разрядов в записи десятичного числа. Запятая фиксирована в машинном формате после младшего разряда.

Ввод двухразрядного целого десятичного числа с 8-разрядного порта (m=2, n=8)

 

       
 
   
 


(,) (,)

 

 

Рис. 2.1. Формат двоично-десятичного целого числа в порте.

 

Соотношение между числом разрядов двоичного формата (n) и десятичного (m) –разрядного задается условием 2n>10m или n= ]m*3.33[

влияет на выбор разрядности программной модели ЭВМ.

Десятичные числа преобладают в машинных вычислениях в экономике, где используется двоично-десятичный формат переменной длины с естественной запятой (System Z фирмы IBM), но могут быть использованы и форматы с фиксированной точкой (точность – одна копейка).

Машинные преобразования и вычисления с целыми числами сохраняют точность(масштаб) M=1, но ограничены диапазоном, который определяется разрядностью двоичного формата (n). Если диапазон превышает допустимый, то всегда можно увеличить абсолютную погрешность масштабированием N/M (М > 1) и перейти в диапазон целых значений с меньшей точностью (большим

масштабом). В существующих ЭВМ для вычислений с фиксированной точкой используются форматы целых двоичных чисел и целая арифметика.

Если используется фиксированный формат 4m=n для промежуточного хранения десятичных данных и обработки двоичных данных, то 2n>10m и в преобразовании 2/10 может возникать переполнение.

Машинные преобразования целого 10/2 могут быть выполнены пересчетом количества N в двоичной системе по обобщенной рекуррентной формуле схемы Горнера [1], где i=(m-1)…0

 

(2.3.) Si+1= Si10 + a m-i, {S0=0,.., Sm=N } (следует из 2.1.) или

 

по формуле с общим членом ряда

Si+1= Si + Biai , Bi+1=10Bi, B0=1, S0=0, i=0,..m-1

Программа в С51 при вводе 2-хразрядного десятичного N=a1a0 формула 2.1. имеет вид N= a1 *10 + a0 При выводе a1=N/10, a0= rest(a/10)

 

#include <reg51.h> //файл адресации регистров MCS51

main()

{ P2= (P1>>4)*10 + (P1&0x0f); //ввод 2/10 числа с порта Р1, выделение со сдвигом старшей тетрады, вывод двоичного числа в

P3=((P2/10)<<4) | (P2%10);

}

Рекуррентная формула (2.3.) может быть переписана в виде рекурсивной функции [ ] и непосредственно представлена рекурсивной программой (см. раздел 2.4.3.)

(2.4) S(i+1)=S(i)*10 + a m – i-1 i=0 - m, S(0)=0;

Обратное машинное преобразование 2/10 в двоичной системе может быть выполнено методом “цифра за цифрой” в обратной рекурсии.

Пусть на последнем шаге при переводе 10/2 получено двоичное число

N=Sn =Sn10 + a0. Если Sn известно, то неизвестное a0 – остаток от целого деления Sn-1=Sn/10. На следующем шаге a1 – остаток при целом делении

Sn-2= Sn-1/10. Следовательно, ai+1 – остаток целого делении Si-1=Si/10. В остатках ai+1=Si%10 будут получены последовательно цифры a0,a1,....an-1

 

Несмотря на то, что арифметика с фиксированной точкой большинства ЭВМ, как правило, целая, можно в Си выполнять вычисления и с дробными числами, явно или неявно используя масштабирование, преобразующее дробное в целое.

Вычисления с фиксированным форматом [(n)-фиксировано и запятая подразумевается перед старшим разрядом)] возможно на уровне Ассемблера. Схемотехника и алгоритмы выполнения арифметических операций ЭВМ с дробным (n) -разрядным форматом проще, чем с целым. Для ЭВМ первого поколения упрощение оборудования было актуально (1955-1964 ЭВМ Урал-1 – два формата 15+1, 35+1 бит, 1959-1962 в ЛИТМО-1 Иванов М.Н. и Галкин Ф.Я. на кафедре ВТ разрабатывают ЭВМ для оптических расчетов со смешанным форматом – целая часть 2 бита и дробная часть 24 бита),

Так как целая арифметика тоже должна присутствовать при расчете адресов и индексов, организации счетчиков, первые 8-разрядные микроЭВМ и все последующие выполняют целочисленные операции и приходится приспосабливаться при программировании, если достоинства дробных вычислений в конкретном приложении принципиально превосходят целые.

Информация (количество) в записи (m) -разрядного дробного в позиционной системе счисления с основанием d=10.

 

m

(2.5) N= ∑ aid(-i) = a110(-1) + a210(-2) + ….+ am10(-m)

i=1

= 10(-1) (a1+10(-1) (a2 + …+10(-1) (am-2+10(-1) (am-1+10(-1) (am+ 0)) …))

 

где ai -двоично-десятичная цифра, d=10, m -число разрядов десятичного дробного числа c запятой, фиксированной перед старшим разрядом.

Преобразование 10/2

1)Известный метод “ручного” преобразования дробного в двоичную использует следующую рекуррентную формулу аналогичную (2.3)

 

 

bi+1 =Si *2; bi+1 целая часть произведения {0,1}

Si+1 = [Si*2]; остаток- дробная часть произведения

S0= N; исходное дробное количество

Для вычислений в ЭВМ требуется двоичная арифметика с десятичными числами. Обычно отказываемся от таких громоздких вычислений и применяем масштабирование, чтобы работать только с двоичными числами.

2) Рекуррентная формула для машинного пересчета N в двоичную систему

(2.5) Si+1= (am-i+Si) 10(-1) = (am-i+Si) /10

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

Преобразование десятичной дроби при вводе в двоичную в mcs51,

работающей с целым 8-разрядным форматом, может быть выполнено с промежуточным преобразованием целого, полученного умножением дробного на 10m, где m- погрешность представления дроби в двоичном числе.

Тогда, применяя рассмотренный выше метод преобразования целых (2.3), получим (n) -разрядное двоичное целое число B2

Для получения дробного двоичного в масштабе 2n необходимо выполнить деление B2*2n/10m = B2*2n в удвоенном формате 2n.

Умножением на основание можно вернуться к исходному дробному десятичному. Двоичный код целого числа B2*2n (дробное в масштабе 2n) совпадает с дробным двоичным B2.

 

       
 
   
 


(,) (,)

 

 

Рис. 2.1. Формат двоично-десятичного дробного числа в порте.

 




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 490; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.