Главная Случайная страница Категории: ДомЗдоровьеЗоологияРнформатикаРскусствоРскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиРкологияРРєРѕРЅРѕРјРёРєР°Рлектроника |
Форматы представления целых чиселЧисла РІ РР’Рњ хранятся РІ соответствии СЃ форматом. Формат – это соглашение или правила представления числа РІ РІРёРґРµ последовательности Р±РёС‚. Минимальная единица хранения данных РІ РР’Рњ – 1 байт. Существуют следующие форматы представления целых чисел: байт (полуслово), слово (включает 2 байта), РґРІРѕР№РЅРѕРµ слово (4 байта), расширенное слово (8 байт). Биты, РёР· которых состоят эти форматы, называются разрядами. Таким образом, РІ байте 8 разрядов, РІ слове – 16 разрядов, Р° РІ РґРІРѕР№РЅРѕРј слове – 32 разряда. Слева находятся старшие разряды, Р° справа – младшие. Каждый РёР· этих форматов может быть знаковым (СЂРёСЃ. 5.1) для представления положительных Рё отрицательных чисел или беззнаковым (СЂРёСЃ. 5.2) для представления положительных чисел. Р РёСЃ. 5.1. Знаковые форматы представления целых чисел Знаковым является самый старший разряд. РќР° СЂРёСЃ. 5.1 знаковый разряд обозначен символом S. Если РѕРЅ равен 0, то число считается положительным, Р° если разряд равен 1, то число считается отрицательным.
Р РёСЃ. 5.2. Беззнаковые форматы представления целых чисел Р’ общем РІРёРґРµ диапазон значений, представляемых знаковыми форматами представления целых чисел (табл. 5.1) определяется РїРѕ формуле –2n–1 £ X £ 2n–1 – 1, Р° для беззнакового формата определяется РїРѕ формуле 0 £ X £ 2n – 1, РіРґРµ n – число разрядов РІ формате. Таблица 5.1. Форматы представления целых чисел РІ РР’Рњ
5.1.2. РџСЂСЏРјРѕР№ Рё дополнительный РєРѕРґС‹ Р’ РїСЂСЏРјРѕРј РєРѕРґРµ старший Р±РёС‚ кодирует знак числа (0 – для положительного, 1 – для отрицательного), Р° остальные биты – модуль числа. Пример 5.1. Число 11 РІ РїСЂСЏРјРѕРј РєРѕРґРµ будет представляться как 0|1011Рї, Р° число –11 – как 1|1011Рї. □ Р’ дополнительном РєРѕРґРµ положительное число кодируется также как Рё РІ РїСЂСЏРјРѕРј. Для представления отрицательного числа РІ дополнительном РєРѕРґРµ, существуют РґРІР° СЃРїРѕСЃРѕР±Р°. РџСЂРё представлении чисел РІ дополнительном РєРѕРґРµ используется операция инвертирования – замена бита РЅР° противоположный, то есть 0 РЅР° 1, Р° 1 РЅР° 0. Правило 5.1. (поразрядное представление отрицательного числа РІ дополнительном РєРѕРґРµ) Представить модуль отрицательного числа РІ РїСЂСЏРјРѕРј РєРѕРґРµ Рё проинвертировать РІСЃРµ разряды левее самой младшей (правой) единицы. Пример 5.2. Представить число –11 РІ дополнительном РєРѕРґРµ СЃ помощью поразрядного представления. Решение. Переведем модуль этого числа РІ двоичную систему: 11 = 10112 Рё представим его РІ РїСЂСЏРјРѕРј РєРѕРґРµ: 0|1011Рї. Самая младшая единица – последняя, поэтому ее оставляем без изменения, Р° остальные разряды слева инвертируем (СЂРёСЃ. 5.3). Р’ результате получаем 1|0101Рґ – представление числа –11 РІ дополнительном РєРѕРґРµ. □ Р РёСЃ. 5.3. Представление числа –11 РІ дополнительном РєРѕРґРµ Правило 5.2. (арифметическое представление отрицательного числа РІ дополнительном РєРѕРґРµ) Прибавить Рє отрицательному числу 2m, РіРґРµ m – количество разрядов РІ двоичном представлении или данном формате, Рё полученное число перевести РІ двоичную систему счисления. Для байта 28 = 256, для слова 216 = 65 536, для РґРІРѕР№РЅРѕРіРѕ слова 232 = 4 294 967 296. РР· этих правил можно сделать вывод, что положительные числа РІ случае увеличения числа разрядов дополняются слева нулями, Р° отрицательные – единицами. Пример 5.3. Представить число –11 РІ дополнительном РєРѕРґРµ путем арифметического представления. Решение. Пусть необходимо получить m = 5 разрядов дополнительного РєРѕРґР°. Вычислим слагаемое 2m = 25 = 32. Произведем сложение Рё перевод РІ двоичную систему счисления: –11 + 32 = 21 = 101012. Полученный результат соответствует представлению числа –11 РІ дополнительном РєРѕРґРµ. Для m = 8, 28 = 256: –11 + 256 = 245 = 111101012. Представление числа –11 было дополнено единицами слева РґРѕ 8 разрядов. □ Возможно Рё обратное преобразование отрицательных чисел, записанных РІ дополнительном РєРѕРґРµ. Правило 5.3. (поразрядное определение значения отрицательного числа, записанного РІ дополнительном РєРѕРґРµ) Алгоритм определения значения отрицательного числа РІ дополнительном РєРѕРґРµ состоит РёР· следующих шагов. 1. Проинвертировать РІСЃРµ разряды левее самой младшей (правой) единицы. 2. Перевести число РёР· двоичной системы счисления РІ десятичную систему РїРѕ правилу 4.1. 3. Умножить результат РЅР° –1. Пример 5.4. Определить, какое десятичное число закодировано числом 1|0101Рґ СЃ помощью поразрядного определения. Решение. Проинвертируем разряды числа: 1010|1Рґ В® 0101|1Рї. Переведем число РёР· двоичной системы счисления РІ десятичную систему счисления: 010112 = 11. Умножим результат РЅР° –1 Рё получим число –11. □ Правило 5.4. (арифметическое определение отрицательного числа, записанного РІ дополнительном РєРѕРґРµ) Перевести двоичное число РІ десятичную систему счисления Рё вычесть РёР· полученного числа число 2m, РіРґРµ m – количество разрядов РІ двоичном представлении. Пример 5.5. Определить, какое десятичное число закодировано числом 1|0101Рґ СЃ помощью арифметического определения. Решение. Переведем число РёР· двоичной системы счисления РІ десятичную систему счисления: 101012 = 21. Вычтем РёР· полученного результата перевода число 2m = 25 = 32, так как двоичное число состоит РёР· 5 разрядов: 21 – 32 = –11. Р’ результате получим десятичное число –11. □ Числа РІ знаковых форматах записываются РІ дополнительном РєРѕРґРµ, Р° РІ беззнаковых – РІ РїСЂСЏРјРѕРј. Запись РІ дополнительном РєРѕРґРµ необходима, чтобы складывать Рё вычитать положительные Рё отрицательные числа без преобразований. Пример 5.6. Сложить 21 Рё –11 РІ двоичной системе счисления. Решение. Переведем слагаемые РІ дополнительный РєРѕРґ: 21 = 0|10101Рґ; –11 = 1|10101Рґ. Будем использовать правила двоичной арифметики: 0 + 0 = 0; 1 + 0 = 0 +1 = 1; 1 + 1 = 10 (СЃ переносом единицы РІ следующий разряд). Сложим РґРІР° двоичных числа столбиком СЃ учетом того, что перенос единицы РёР· знакового разряда игнорируется: 0101012 1101012 0010102 = 10. Р’ результате получено число 10 – СЃСѓРјРјР° 21 Рё –11 без дополнительных преобразований. □ Форматы целых чисел слово Рё РґРІРѕР№РЅРѕРµ слово хранятся РІ памяти РР’Рњ РІ обратном РїРѕСЂСЏРґРєРµ, то есть сначала младший байт, Р° затем старший. Например, слово B5DE16 будет располагаться РІ памяти, как показано РЅР° СЂРёСЃ. 5.4. Р РёСЃ. 5.4. Расположение слова B5DE16 РІ памяти РР’Рњ Такое расположение байт СѓРґРѕР±РЅРѕ РїСЂРё операциях СЃ числами, так как вычисления начинаются СЃ младших разрядов, поэтому РѕРЅРё Рё располагаются сначала. 5.2. Представление вещественных чисел Вещественные числа представляются РІ форме числа СЃ плавающей запятой (точкой) РІРёРґР°: В±M × nВ±P, РіРґРµ M – мантисса (значащая часть числа); n – основание системы счисления; P – РїРѕСЂСЏРґРѕРє числа. Пример 5.7. Число 2,5 × 1018 имеет мантиссу равную 2,5, Р° РїРѕСЂСЏРґРѕРє равный 18. □ Мантисса называется нормализованной, если ее абсолютное значение лежит РІ диапазоне: 1/n £ |M| < 1, РіРґРµ n – основание системы счисления. Рто условие означает, что первая цифра после запятой РЅРµ равна нулю, Р° абсолютное значение мантиссы РЅРµ превышает единицы. Число СЃ нормализованной мантиссой называется нормализованным. Пример 5.8. Представить числа –245,62 Рё 0,00123 РІ форме числа СЃ плавающей точкой. Решение. Число –245,62 можно представить РІ форме числа СЃ РїРѕСЂСЏРґРєРѕРј –245,62 × 100. Мантисса этого числа РЅРµ нормализована, поэтому поделим его РЅР° 103, увеличив РїСЂРё этом РїРѕСЂСЏРґРѕРє: –0,24562 × 103. Р’ результате число –0,24562 × 103 нормализовано. Число 0,00123 РІ форме числа СЃ РїРѕСЂСЏРґРєРѕРј 0,00123 × 100 РЅРµ нормализовано, так как РЅРµ нормализована мантисса. Умножим мантиссу РЅР° 102, уменьшив РїСЂРё этом РїРѕСЂСЏРґРѕРє: 0,123 × 10–2. Р’ результате число 0,123 × 10–2 нормализовано. □ Р’ данном примере для нормализации мантиссы запятая сдвигалась вправо или влево. Поэтому такие числа называют числами СЃ плавающей точкой. Р’ отличие РѕС‚ чисел СЃ фиксированной точкой, РѕРЅРё значительно СѓСЃРєРѕСЂСЏСЋС‚ арифметические операции, РїСЂРё этом каждый раз необходимо нормализовывать мантиссу чисел СЃ плавающей точкой. Для основанного РЅР° стандарте IEEE-754 представления вещественного числа РІ РР’Рњ используются m + p + 1 Р±РёС‚, распределяемые следующим образом (СЂРёСЃ. 5.5): 1 разряд знака мантиссы; p разрядов РїРѕСЂСЏРґРєР°; m разрядов мантиссы. Р РёСЃ. 5.5. Структура общего формата числа СЃ плавающей точкой Рто представление называется (m, p)-форматом. Диапазон представления чисел X (m, p)-форматом определяется РёР· неравенства: £ X £ (1 – 2– m –1) В» . РџСЂРё этом РїРѕСЂСЏРґРѕРє числа P должен удовлетворять условию Для вещественных чисел РІ стандарте IEEE-754 используются (23,8)- Рё (52,11)-форматы, называемые одинарным Рё двойным вещественными форматами соответственно (табл. 5.2). Чтобы представить значение этих РїРѕСЂСЏРґРєРѕРІ, количество секунд, прошедших СЃ момента образования планеты Земля, составляет всего 1018. Правило 5.5. (перевод десятичных чисел РІ (m, p)-формат) Алгоритм перевода десятичного числа X РІ (m, p)-формат состоит РёР· следующих шагов. 1. Если РҐ = 0, то принять знаковый разряд, РїРѕСЂСЏРґРѕРє Рё мантиссу Р·Р° ноль Рё закончить алгоритм. 2. Если X > 0, то принять знаковый разряд 0, иначе принять 1. Знаковый разряд сформирован. 3. Перевести целую Рё РґСЂРѕР±РЅСѓСЋ часть абсолютного значения числа X РІ двоичную систему счисления. Если число РґСЂРѕР±РЅРѕРµ, то получить m + 1 разрядов. Принять РїРѕСЂСЏРґРѕРє равный нулю. Таблица 5.2. Сравнительные характеристики
4. Если X ³ 1, то перенести запятую влево РґРѕ самого старшего разряда Рё увеличить РїРѕСЂСЏРґРѕРє, иначе перенести запятую вправо РґРѕ первого ненулевого (единичного) разряда Рё уменьшить РїРѕСЂСЏРґРѕРє. 5. Если число разрядов РґСЂРѕР±РЅРѕР№ части меньше m, то дополнить РґСЂРѕР±РЅСѓСЋ часть нулями справа РґРѕ m разрядов. Отбросить единицу РёР· целой части. Мантисса сформирована. 6. Прибавить Рє РїРѕСЂСЏРґРєСѓ смещение 2p – 1 – 1 Рё перевести РїРѕСЂСЏРґРѕРє РІ двоичную систему счисления. РџРѕСЂСЏРґРѕРє сформирован. РљРѕРґ, РІ котором представлен РїРѕСЂСЏРґРѕРє, называется смещенным. Смещенный РїРѕСЂСЏРґРѕРє упрощает сравнение, сложение Рё вычитание РїРѕСЂСЏРґРєРѕРІ РїСЂРё арифметических операциях. 7. Записать знаковый разряд, РїРѕСЂСЏРґРѕРє Рё мантиссу РІ соответствующие разряды формата. Пример 5.9. Представить число –25,6875 РІ одинарном вещественном формате. Решение. Р’ примере 4.7 был произведен перевод абсолютного значения числа –25,6875 РІ двоичную систему Рё было получено 9 разрядов: 25,6875 = 11001,10112. Нормализуем число, СЃРґРІРёРЅСѓРІ запятую влево Рё повысив РїРѕСЂСЏРґРѕРє: 1,100110112 × 24. После отбрасывания целой части остается 23 разряда РґСЂРѕР±РЅРѕР№ части (РІ соответствии СЃ форматом (23,8)), записываемые как мантисса: 10011011000000000000000. РџРѕСЂСЏРґРѕРє равен 4 (степень РґРІРѕР№РєРё после СЃРґРІРёРіР° запятой влево). Произведем его смещение Рё перевод РІ двоичную систему счисления: 4 + 127 = 131 = 100000112. Число –25,6875 отрицательное, следовательно, знаковый разряд равен 1. Р’СЃРµ готово для представления числа –25,6875 РІ одинарном вещественном формате РїРѕ схеме знаковый разряд + РїРѕСЂСЏРґРѕРє + мантисса: 1 10000011 10011011000000000000000. Разделим это число РїРѕ 8 разрядов, сформируем байты Рё запишем РёС… шестнадцатеричными числами:
Таким образом, число –25,6875 можно записать как C1CD8000. □ Как Рё форматы целых чисел, форматы вещественных чисел хранятся РІ памяти РР’Рњ РІ обратном РїРѕСЂСЏРґРєРµ следования байт (сначала младшие, потом старшие). Арифметические операции над числами СЃ плавающей точкой осуществляются РІ следующем РїРѕСЂСЏРґРєРµ. РџСЂРё сложении (вычитании) чисел СЃ одинаковыми порядками РёС… мантиссы складываются (вычитаются), Р° результату присваивается РїРѕСЂСЏРґРѕРє, общий для исходных чисел. Если РїРѕСЂСЏРґРєРё исходных чисел разные, то сначала эти РїРѕСЂСЏРґРєРё выравниваются (число СЃ меньшим РїРѕСЂСЏРґРєРѕРј приводится Рє числу СЃ большим РїРѕСЂСЏРґРєРѕРј), Р° затем выполняется операция сложения (вычитания) мантисс. Если РїСЂРё выполнении операции сложения мантисс возникает переполнение, то СЃСѓРјРјР° мантисс сдвигается влево РЅР° РѕРґРёРЅ разряд, Р° РїРѕСЂСЏРґРѕРє СЃСѓРјРјС‹ увеличивается РЅР° 1. РџСЂРё умножении чисел РёС… мантиссы перемножаются, Р° РїРѕСЂСЏРґРєРё складываются. РџСЂРё делении чисел мантисса делимого делится РЅР° мантиссу делителя, Р° для получения РїРѕСЂСЏРґРєР° частного РёР· РїРѕСЂСЏРґРєР° делимого вычитается РїРѕСЂСЏРґРѕРє делителя. РџСЂРё этом если мантисса делимого больше мантиссы делителя, то мантисса частного окажется больше 1 (РїСЂРѕРёСЃС…РѕРґРёС‚ переполнение) Рё запятую следует сдвинуть влево, одновременно увеличив РїРѕСЂСЏРґРѕРє частного. Представление символов РІ РР’Рњ Р’ РР’Рњ каждый СЃРёРјРІРѕР» (например, Р±СѓРєРІР°, цифра, знак препинания) закодирован РІ РІРёРґРµ беззнакового целого двоичного числа. РљРѕРґРёСЂРѕРІРєР° символов – это соглашение РѕР± однозначном соответствии каждому символу РѕРґРЅРѕРіРѕ беззнакового целого двоичного числа, называемого РєРѕРґРѕРј символа. Для СЂСѓСЃСЃРєРѕРіРѕ алфавита существует несколько РєРѕРґРёСЂРѕРІРѕРє (табл. 5.3). Таблица 5.3. РљРѕРґРёСЂРѕРІРєРё Р±СѓРєРІ алфавита СЂСѓСЃСЃРєРѕРіРѕ языка
Р’ кодировках 866, 1251, РљРћР-8 Рё Unicode первые 128 символов (цифры, заглавные Рё строчные латинские Р±СѓРєРІС‹, знаки препинания) СЃРѕ значениями РєРѕРґРѕРІ РѕС‚ 0 РґРѕ 127 РѕРґРЅРё Рё те же Рё определяются стандартом ASCII (American Standard Code for Information Interchange – американский стандартный РєРѕРґ для обмена информацией). Цифры 0, 1, ..., 9 имеют соответственно РєРѕРґС‹ 48, 49, ..., 57; прописные латинские Р±СѓРєРІС‹ A, B, ..., Z (всего 26 Р±СѓРєРІ) – РєРѕРґС‹ 65, 66, ..., 90; строчные латинские Р±СѓРєРІС‹ a, b, ..., z (всего 26 Р±СѓРєРІ) – РєРѕРґС‹ 97, 98, ..., 122. Вторые 128 символов СЃРѕ значениями РєРѕРґРѕРІ РѕС‚ 128 РґРѕ 255 РєРѕРґРёСЂРѕРІРѕРє 866, 1251, РљРћР-8 содержат символы псевдографики, математические операции Рё символы алфавитов, отличных РѕС‚ латинского. Причем разные символы разных алфавитов имели РѕРґРёРЅ Рё тот же РєРѕРґ. Например, РІ РєРѕРґРёСЂРѕРІРєРµ 1251 СЃРёРјРІРѕР» СЂСѓСЃСЃРєРѕРіРѕ алфавита Р‘ имеет тот же РєРѕРґ, что Рё СЃРёРјРІРѕР» Á РІ стандартной РєРѕРґРёСЂРѕРІРєРµ ASCII. Такая неоднозначность вызывала проблемы СЃ РєРѕРґРёСЂРѕРІРєРѕР№ текста. Поэтому была предложена двухбайтовая РєРѕРґРёСЂРѕРІРєР° Unicode, которая позволяет закодировать символы РјРЅРѕРіРёС… нелатинских алфавитов. Десятичные значения РєРѕРґРѕРІ Р±СѓРєРІ СЂСѓСЃСЃРєРѕРіРѕ алфавита РІ кодировках 866, 1251 Рё Unicode приведены РІ табл. 5.4. Таблица 5.4. Значения РєРѕРґРѕРІ Р±СѓРєРІ СЂСѓСЃСЃРєРѕРіРѕ алфавита
Р’ РєРѕРґРёСЂРѕРІРєРµ РљРћР-8 (табл. 5.5) РєРѕРґС‹ Р±СѓРєРІ СЂСѓСЃСЃРєРѕРіРѕ алфавита упорядочены РЅРµ РїРѕ расположению Р±СѓРєРІ РІ алфавите, Р° РїРѕ соответствию РёС… буквам латинского алфавита. Например, РєРѕРґС‹ латинских Р±СѓРєРІ Рђ, Р’, РЎ имеют соответственно десятичные значения 65, 66, 67, Р° СЂСѓСЃСЃРєРёС… Р±СѓРєРІ Рђ, Р‘, Р¦ – значения 225, 226, 227. Таблица 5.5. Значения РєРѕРґРѕРІ Р±СѓРєРІ СЂСѓСЃСЃРєРѕРіРѕ алфавита
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-07-23 lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |