Как представляются действительные числа в памяти эвм
Перейти к содержимому

Как представляются действительные числа в памяти эвм

  • автор:

ЦП Автоматизированные системы управления и промышленная безопасность

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

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

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

Кодирование – это преобразование данных одного типа через данные другого типа. В ЭВМ применяется система двоичного кодирования, основанная на представлении данных последовательностью двух знаков: 1 и 0, которые называются двоичными цифрами (binary digit – сокращенно bit).

Целые числа кодируются двоичным кодом довольно просто (путем деления числа на два). Для кодирования нечисловой информации используется следующий алгоритм: все возможные значения кодируемой информации нумеруются и эти номера кодируются с помощью двоичного кода.

Кодирование чисел

Есть два основных формата представления чисел в памяти компьютера. Один из них используется для кодирования целых чисел, второй (так называемое представление числа в формате с плавающей точкой) используется для задания некоторого подмножества действительных чисел.

Кодирование целых чисел производиться через их представление в двоичной системе счисления: именно в этом виде они и помещаются в ячейке. Один бит отводиться при этом для представления знака числа (нулем кодируется знак «плюс», единицей – «минус»).

Для кодирования действительных чисел существует специальный формат чисел с плавающей запятой. Число при этом представляется в виде: , где M – мантисса, p – порядок числа N, q – основание системы счисления. Если при этом мантисса M удовлетворяет условию , то число N называют нормализованным.

Кодирование координат

Закодировать можно не только числа, но и другую информацию, например, о том, где находится некоторый объект. Величины, определяющие положение объекта в пространстве, называются координатами. В любой системе координат есть начало отсчёта, единица измерения, масштаб, направление отсчёта, или оси координат. Примеры систем координат – декартовы координаты, полярная система координат, шахматы, географические координаты.

Кодирование текста

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

Существующий стандарт ASCII (сокращение от American Standard Code for Information Intercange – американский стандартный код для обмена информацией; 8 – разрядная система кодирования) содержит две таблицы кодирования – базовую и расширенную. Первая таблица содержит 128 основных символов, в ней размещены коды символов английского алфавита, а во второй таблице кодирования содержатся 128 расширенных символов.

Так как в этот стандарт не входят символы национальных алфавитов других стран, то в каждой стране 128 кодов расширенных символов заменяются символами национального алфавита. В настоящее время существует множество таблиц кодировки символов, в которых 128 кодов расширенных символов заменены символами национального алфавита.

Так, например, кодировка символов русского языка Widows – 1251 используется для компьютеров, работающих под ОС Windows. Другая кодировка для русского языка – это КОИ – 8, которая также широко используется в компьютерных сетях и российском секторе Интернет.

В настоящее время существует универсальная система UNICODE, основанная на 16 – разрядном кодировании символов. Эта 16 – разрядная система обеспечивает универсальные коды для 65536 различных символов, т.е. в этой таблице могут разместиться символы языков большинства стран мира.

Кодирование графической информации

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

Растровые изображения представляют собой однослойную сетку точек, называемых пикселями (pixel, от англ. picture element). Код пикселя содержит информации о его цвете.

Для описания черно-белых изображений используются оттенки серого цвета, то есть при кодировании учитывается только яркость. Она описывается одним числом, поэтому для кодирования одного пикселя требуется от 1 до 8 бит: чёрный цвет – 0, белый цвет – N = 2 k -l, где k – число разрядов, которые отводятся для кодирования цвета. Например, при длине ячейки в 8 бит это 256-1 = 255. Человеческий глаз в состоянии различить от 100 до 200 оттенков серого цвета, поэтому восьми разрядов для этого вполне хватает.

Цветные изображения воспринимаются нами как сумма трёх основных цветов – красного, зелёного и синего. Например, сиреневый = красный + синий; жёлтый = красный + зелёный; оранжевый = красный + зелёный, но в другой пропорции. Поэтому достаточно закодировать цвет тремя числами – яркостью его красной, зелёной и синей составляющих. Этот способ кодирования называется RGB (Red – Green – Blue). Его используют в устройствах, способных излучать свет (мониторы). При рисовании на бумаге действуют другие правила, так как краски сами по себе не испускают свет, а только поглощают некоторые цвета спектра. Если смешать красную и зелёную краски, то получится коричневый, а не жёлтый цвет. Поэтому при печати цветных изображений используют метод CMY (Cyan – Magenta – Yellow) – голубой, сиреневый, жёлтый цвета. При таком кодировании красный = сиреневый + жёлтый; зелёный = голубой + жёлтый.

В противоположность растровой графике векторное изображение многослойно. Каждый элемент такого изображения – линия, прямоугольник, окружность или фрагмент текста – располагается в своем собственном слое, пиксели которого устанавливаются независимо от других слоев. Каждый элемент векторного изображения является объектом, который описывается с помощью специального языка (математических уравнения линий, дуг, окружностей и т.д.) Сложные объекты (ломаные линии, различные геометрические фигуры) представляются в виде совокупности элементарных графических объектов.

Объекты векторного изображения, в отличие от растровой графики, могут изменять свои размеры без потери качества (при увеличении растрового изображения увеличивается зернистость).

Как всякий звук, музыка является не чем иным, как звуковыми колебаниями, зарегистрировав которые достаточно точно, можно этот звук безошибочно воспроизвести. Нужно только непрерывный сигнал, которым является звук, преобразовать в последовательность нулей и единиц. С помощью микрофона звук можно превратить в электрические колебания и измерить их амплитуду через равные промежутки времени (несколько десятков тысяч раз в секунду). Каждое измерение записывается в двоичном коде. Этот процесс называется дискретизацией. Устройство для выполнения дискретизации называется аналогово-цифровым преобразователем (АЦП). Воспроизведение такого звука ведётся при помощи цифро-аналогового преобразователя (ЦАП). Полученный ступенчатый сигнал сглаживается и преобразуется в звук при помощи усилителя и динамика. На качество воспроизведения влияют частота дискретизации и разрешение (размер ячейки, отведённой под запись значения амплитуды). Например, при записи музыки на компакт-диски используются 16-разрядные значения и частота дискретизации 44 032 Гц.

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

Издавна используется достаточно компактный способ представления музыки – нотная запись. В ней с помощью специальных символов указывается высота и длительность, общий темп исполнения и как сыграть. Фактически, такую запись можно считать алгоритмом для музыканта, записанным на особом формальном языке. В 1983 г. ведущие производители компьютеров и музыкальных синтезаторов разработали стандарт, определивший такую систему кодов. Он получил название MIDI (Musical Instrument Digital Interface). При таком кодировании запись компактна, легко меняется инструмент исполнителя, тональность звучания, одна и та же запись воспроизводится как на синтезаторе, так и на компьютере.

Конечно, такая система кодирования позволяет записать далеко не всякий звук, она годится только для инструментальной музыки. Но есть у нее и преимущества: чрезвычайно компактная запись, естественность для музыканта (практически любой MIDI-редактор позволяет работать с музыкой в виде обычных нот), легкость замены инструментов, изменения темпа и тональности мелодии.

Есть и другие форматы записи музыки. Среди них – формат MP3, позволяющий с очень большим качеством и степенью сжатия кодировать музыку, при этом вместо 18 – 20 музыкальных композиций на стандартном компакт-диске (CDROM) помещается около 200. Одна песня занимает примерно 3,5 Mb, что позволяет пользователям сети Интернет легко обмениваться музыкальными композициями.

Представление данных в памяти ЭВМ

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

Элементарная ячейка памяти ЭВМ имеет длину 8 бит (1 байт). Каждый байт имеет свой номер (его называют адресом). Наибольшую последовательность бит, которую ЭВМ может обрабатывать как единое целое, называют машинным словом. Длина машинного слова зависит от разрядности процессора и может быть равной 16, 32 битам и т.д.

Для кодирования символов достаточно одного байта. При этом можно представить 256 символов (с десятичными кодами от 0 до 255). Набор символов персональных компьютеров чаще всего является расширением кода ASCII (American Standart Code of Information Interchange — стандартный американский код для обмена информацией).

В некоторых случаях при представлении в памяти ЭВМ чисел используется смешанная двоично-десятичная система счисления, где для хранения каждого десятичного знак нужен полубайт (4 бита) и десятичные цифры от 0 до 9 представляются соответствующими двоичными числами от 0000 до 1001. Например, упакованный десятичный формат, предназначенный для хранения целых чисел с 18-ю значащими цифрами и занимающий в памяти 10 байт (старший из которых знаковый), использует именно этот вариант.

Другой способ представления целых чисел — дополнительный код . Диапазон значений величин зависит от количества бит памяти отведенных для их хранения. Например, величины типа Integer лежат в диапазоне от
-32768 (-2 15 ) до 32677 (2 15 -1) и для их хранения отводится 2 байта: типа LongInt — в диапазоне от -2 31 до 2 31 -1 и размещаются в 4 байтах: типа Word — в диапазоне от 0 до 65535 (2 16 -1) используется 2 байта и т.д.

Как видно из примеров, данные могут быть интерпретированы как числа со знаком, так и без знаков. В случае представления величины со знаком самый левый (старший) разряд указывает на положительное число, если содержит нуль, и на отрицательное, если — единицу.

Вообще, разряды нумеруются справа налево, начиная с нуля.

Дополнительный код положительного числа совпадает с его прямым кодом . Прямой код целого числа может быть представлен следующим образом: число переводиться в двоичную систему счисления, а затем его двоичную запись слева дополняют таким количеством незначащих нулей, сколько требует тип данных, к которому принадлежит число. Например, если число 37(10) = 100101(2) объявлено величиной типа Integer, то его прямым кодом будет 0000000000100101, а если величиной типа LongInt, то его прямой код будет 00000000000000000000000000100101. Для более компактной записи чаще используют шестнадцатеричный код. Полученные коды можно переписать соответственно как 0025(16) и 00000025(16).

  1. записать прямой код модуля числа;
  2. инвертировать его (заменить единицы нулями, нули — единицами);
  3. прибавить к инверсионному коду единицу.
  1. прямой код числа 37 есть 000000000000000000000000000100101
  2. инверсный код 11111111111111111111111111011010
  3. дополнительный код 11111111111111111111111111011011 или FFFFFFDB(16)
  1. вычесть из кода 1;
  2. инвертировать код;
  3. перевести в десятичную систему счисления. Полученное число записать со знаком минус.

Примеры. Запишем числа, соответствующие дополнительным кодам:

Поскольку в старшем разряде записан нуль, то результат будет положительным. Это код числа 23.

Здесь записан код отрицательного числа, исполняем алгоритм:

  1. 1111111111000000(2) — 1(2) = 1111111110111111(2);
  2. 0000000001000000;
  3. 1000000(2) = 64(10)

Несколько иной способ применяется для представления в памяти персонального компьютера действительных чисел. Рассмотрим представление величин с плавающей точкой .

Персональный компьютер IBM PC с математическим сопроцессором 8087 позволяет работать со следующими действительными типами (диапазон значений указан по абсолютной величине):

Тип Диапазон Мантисса Байты
Real 2,9*10 -39 ..1,7*10 38 11-12 6
Single 1,5*10 -45 ..3,4*10 38 7-8 4
Double 5,0*10 -324 ..1,7*10 308 15-16 8
Extended 3,4*10 -4932 ..1,1*10 4932 19-20 10

Покажем преобразование действительного числа для представления его в памяти ЭВМ на примере величины типа Double.

Как видно из таблицы, величина этого типа занимает в памяти 8 байт. На рисунке показано, как здесь представлены поля мантиссы и порядка:

S Смещенный порядок Мантисса

Можно заметить, что старший бит, отведенный под мантиссу, имеет номер 51, т.е. мантисса занимает младшие 52 бита. Черта указывает здесь на положение двоичной запятой. Перед запятой должен стоять бит целой части мантиссы, но поскольку она всегда равна единице, здесь данный бит не требуется и соответствующий разряд отсутствует в памяти (но он подразумевается). Значение порядка храниться здесь не как целое число, представленное в дополнительном коде. Для упрощения вычислений и сравнения действительных чисел значение порядка в ЭВМ хранится в виде смещенного числа , т.е. к настоящему значению порядка, перед записью его в память, прибавляется смещение. Смещение выбирается так, чтобы минимальному значению порядка соответствовал нуль. Например, для типа Double порядок занимает 11 бит и имеет диапазон от 2 -1023 до 2 1023 , поэтому смещение равно 1023(10) = 1111111111(2). Наконец, бит с номером 63 указывает на знак числа.

  1. перевести модуль данного числа в двоичную систему счисления;
  2. нормализовать двоичное число, т.е. записать в виде М*2 p , где М — мантисса (ее целая часть равна 1(2)) и р — порядок, записанный в десятичной системе счисления;
  3. прибавить к порядку смещение и перевести смещенный порядок в двоичную систему счисления;
  4. учитывая знак заданного числа (0 — положительное; 1 — отрицательное), выписать его представление в памяти ЭВМ.
  1. Двоичная запись модуля этого числа имеет вид 100111000,0101.
  2. Имеем 100111000,0101 = 1,001110000101*2 8 .
  3. Получаем смещенный порядок 8 + 1023 = 1031. Далее имеем 1031(10) = 10000000111(2).
  4. Окончательно

1 10000000111 0011100001010000000000000000000000000000000000000000

Очевидно, что более компактнополученный код стоит записать следующим образом: C073850000000000(16).

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

Пусть дан код 3FEC600000000000(16) или

0 01111111110 1100011000000000000000000000000000000000000000000000
  1. Прежде всего, замечаем, что это код положительного числа, поскольку в разряде с номером 63 записан нуль, Получим порядок этого числа. 01111111110(2) = 1022(10). 1022 — 1023 = -1.
  2. Число имеет вид 1,1100011*2 -1 или 0,11100011.
  3. Переводом в десятичную систему счисления получаем 0,88671875.

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

Если же вам нужны варианты на бумаге то жмите здесь.

Представление числовой информации в памяти компьютера Текст научной статьи по специальности «Математика»

NUMBER SYSTEM / НОРМАЛИЗОВАННАЯ ФОРМА ЗАПИСИ ЧИСЛА / THE NORMALIZED NUMBER / ДОПОЛНИТЕЛЬНЫЙ КОД / ADDITIONAL CODE / ФОРМАТ С ФИКСИРОВАННОЙ ТОЧКОЙ / FIXED-POINT FORMAT / FLOATING-POINT FORMAT / ФОРМАТ С ПЛАВАЮЩЕЙ ТОЧКОЙ / СИСТЕМА СЧИСЛЕНИЯ

Аннотация научной статьи по математике, автор научной работы — Итпекова Галина Семёновна

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Итпекова Галина Семёновна

Особенности представления вещественных чисел в постбинарных форматах

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

Модулярно-логарифмический сопроцессор для массовых арифметических вычислений
Арифметика многократной точности на основе систем остаточных классов
Языковые средства комплекса ПСПСЦУ. Общие элементы
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Presentation of Numerical Information in the Computer Memory

The article discusses ways of machine number presentation and questions of realization of the binary arithmetic in the computer memory. On the basis of the theorems, the author establishes a close relationship between the number systems with bases 2 n. We consider examples of the internal presentation of a number in the format of a fixed-point and floating-point number in floating point format

Текст научной работы на тему «Представление числовой информации в памяти компьютера»

ПРЕДСТАВЛЕНИЕ ЧИСЛОВОЙ ИНФОРМАЦИИ В ПАМЯТИ КОМПЬЮТЕРА

Хакасский государственный университет им. Н. Ф. Катанова

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

Ключевые слова: система счисления, нормализованная форма записи числа, дополнительный код, формат с фиксированной точкой, формат с плавающей точкой.

Известно, что компьютер осуществляет обработку числовой, символьной, графической и звуковой информации, представленной в двоичном коде. Разделы информатики, посвящённые компьютерным технологиям обработки информации, включают темы представления соответствующих видов данных (чисел, символов, изображения, звука). Для того чтобы хранить информацию в памяти ЭВМ, принимают некоторые соглашения о способах представления и организации данных. В учебной литературе существуют различные подходы к изложению вопросов, связанных с пониманием принципов кодирования любой информации [1; 2; 3 и др.].

Объектом данной статьи является кодирование информации, а предметом — способы машинного представления числа. Выбор темы обусловлен тем, что решение вычислительных задач с использованием компьютера сводится к преобразованию числовой информации, и при этом возникают вопросы, касающиеся представления чисел и реализации двоичной арифметики в ЭВМ. Так как в памяти компьютера хранятся целые и вещественные числа и при этом числовые данные представляются определёнными форматами, то понимание вопросов кодирования числовой информации требует знаний о системах счисления и основах арифметики нормализованных чисел.

Когда речь идёт о процессе формирования представления числовой информации в памяти компьютера, то имеют в виду, что она представлена в двоичной системе счисления. Под системой счисления принято понимать совокупность приёмов обозначения (записи) чисел [2]. Наиболее совершенными являются позиционные системы счисления. В них значение каждой цифры в записи числа зависит от её положения (позиции) в ряду других чисел, изображающих число. Минимальной системой, в которой реализуется принцип позиционности в цифровой форме записи числа, является двоичная система счисления, основание которой q = 2.

Как известно, двоичная система является системой, пригодной для аппаратной реализации. Более глубокое изучение данной системы в прикладной математике началось с 30-х гг. XX века. Это было обусловлено, с одной стороны, потребностью создания надёжных и простых по конструкции счётных механических устройств, а с другой — простотой двоичной арифметики. В 1946 году А. Беркс, Х. Гольдстайн и Дж. фон Нейман опубликовали работу о проекте первой ЭВМ с хранимой в памяти программой [2]. Эта работа утвердила двоичную арифметику в качестве общепринятой основы при конструировании ЭВМ с программным управлением.

Общеизвестно, что естественным обобщением двоичной системы являются системы с основаниями q = 8 и q = 16. Эти системы счисления широко распространены, и между ними существует взаимосвязь, которая определяется двумя теоремами [2].

Теорема 1. Для записи целого двоичного числа в системе счисления с основанием q = 2″ достаточно данное двоичное число разбить на грани справа налево (т. е. от младших разрядов к старшим) по » цифр в каждой грани. Затем каждую такую грань следует рассмотреть как » — разрядное двоичное число и записать его как цифру в системе с основанием q = 2П .

Доказательство. Пусть дано (abcdef ) . Выполняя преобразования, получим

(abcdef) q = a ■ q5 + b ■ q4 + c ■ q3 + d ■ q2 + eq + f = = (aq2 + bq + c)q~

= A ■ q3 + B = Ap + B = ABp ; Ap = aq2 + bq + c = abcq;

BP = dq2 + eq + f = defq.

Таким образом, трёхразрядные числа системы счисления с основанием q записаны как цифры системы с основанием p.

Пример 1. Число 111011101002 заменить равным ему числом восьмеричной системы счисления, т. е. системы с основанием q = 23.

В соответствии с теоремой 1 разбиваем число от младших разрядов к старшим по три цифры в каждой грани:

011 101 110 100 3 5 6 4

-(aq2 + bq + c)q3 + (dq2 + eq + f )=

Внизу под каждой из граней выписаны цифры, соответствующие трёхразрядным двоичным числам:

112 = 38, 1012 = 58, 1102 = 68, 1002 = 48.

Итак, 111011101002 = 35648.

Теорема 2. Для замены целого числа, записанного в системе с основанием p = 2П, равным ему числом в двоичной системе счисления, достаточно каждую цифру данного числа заменить и-разрядным двоичным числом.

Доказательство. Пусть дано ABC , где p = q3.

= (aq2 + bq + c)(q3) + (dq2 + eq + f )q3 + (kq2 + Iq + m)= = aq8 + bq1 + cq6 + dq5 + eq 4 + fq3 + kq2 +1 q + m = = abcde fklmnq .

Пример 2. Число 27538 заменить равным ему двоичным числом.

В соответствии с теоремой 2 каждую цифру данного числа представим трёхразрядным двоичным числом:

010 111 101 011

Получим равенство 27538 = 0101111010112.

Алгоритмы замены целых чисел и правильных дробей какой-либо системы счисления с основанием q равными числами другой системы с основанием p приводит В. Н. Касаткин [2]. Кроме того, автор знакомит со смешанными системами счисления.

В результате анализа учебной и учебно-методической литературы выявлено, что при изложении информации о представлении чисел в памяти ЭВМ используются разные приёмы. В учебнике И. Г. Семакина [1] содержание учебной информации о представлении чисел связано со структурой памяти компьютера. Описание методики представления информации в двоичной форме дано в учебном пособии под редакцией А. И. Семенова [3]. Тема «Кодирование числовой информации» представлена через обсуждение естественной и экспоненциальной форм записи числа и формата с фиксированной и плавающей точкой в пособии О. Л. Соколовой [4]. Вопросы реализации арифметики в ЭВМ уточняются В. Н. Касаткиным через понятия нормализации чисел. Далее речь пойдет о нормализованных числах, так как запись чисел в нормализованной форме используется при представлении в памяти ЭВМ вещественных чисел. Именно в случае понимания, что такое «мантисса» и «порядок» нормализованного числа, происходит овладение подлинной культурой точных вычислений с использованием компьютера.

Определение. Число А называется нормализованным, если оно представлено в виде

где M10 — мантисса, которая представляет собой десятичную правильную дробь, равную или больше 0,1 (т. е. 0,1 < M10 < 1); p10 - порядок, он является целым десятичным числом.

Приведём примеры нормализованного представления чисел:

29710 = 0,297-103 (М10 = 0,297; p 10 = 3),

0,03110 = 0,31-10-1 (м 10 = 0,31; p 10 =-1),

-34,17610 =-0,34176-102 (М10 =-0,34176; p 10 = 2).

При нормализации числа его запись имеет следующие составляющие: знак числа — знак порядка; модуль мантиссы — модуль порядка. В нормализованной форме могут быть представлены натуральные, целые, рациональные и иррациональные числа. Нормализованные числа образуют множество чисел, в которых действует своя арифметика.

Арифметика нормализованных чисел тесно связана с её реализацией в вычислительных устройствах. Эта связь состоит в том, что в любом вычислительном устройстве, использующем арифметику нормализованных чисел, в памяти для хранения результатов в сумматоре отводится установленное число разрядов как для порядка (p10), так и для мантиссы (М10). Кроме того, определяется способ хранения знаков мантиссы и порядка. Нормализация чисел позволяет создать единую арифметику. Для вычислительных устройств нет проблемы распознавания типа числа, так как арифметическое устройство работает только с мантиссами и порядками.

Перейдём к рассмотрению вопроса о внутреннем (машинном) представлении числа на примере 16-разрядной машины. Числа в памяти ЭВМ хранятся в двух форматах: в формате с фиксированной точкой и в формате с плавающей точкой. Под точкой подразумевается знак разделения целой и дробной части числа. Формат с фиксированной точкой используется для хранения в памяти целых чисел. В случае 16-разрядной машины число занимает одно машинное слово памяти (16 бит) и для хранения чисел отводится 16 разрядов, которые в совокупности представляют двухбайтовую разрядную сетку.

Для целых чисел существуют два представления: беззнаковое (только для неотрицательных целых чисел) и со знаком. Очевидно, что отрицательные числа можно представлять только в знаковом виде. Для беззнакового

представления числа все разряды ячейки отводятся под него. Например, в байте (8 бит) можно представить беззнаковые числа от 0 до 28 — 1 = 255. В двухбайтовой разрядной сетке можно сохранить диапазон чисел от 0 до 216 — 1 = 65535. Поэтому, если известно, что числовая величина является неотрицательной, то выгоднее рассматривать её как беззнаковую.

Для представления целых чисел со знаком самый старший (левый) бит отводится под знак числа, остальные разряды — под само число. Знак положительного числа кодируется нулём, а знак отрицательного числа кодируется единицей. Код знака числа хранит первый слева двоичный разряд. Например, в байте можно представить знаковые целые числа от -27 = -128 до 27 — 1 = 127, в двухбайтовой разрядной сетке диапазон целых чисел со знаком будет составлять от -215 = -32768 до 215 — 1 = 32767. Покажем на примерах, как получить внутреннее представление целого числа N в формате с фиксированной точкой и вещественного числа в формате с плавающей точкой.

Пример 3. Представить число N = 160710 в двухбайтовой разрядной сетке.

1. Переведём число 160710 в двоичную систему счисления.

N = 160710 = 110010001112.

2. Изобразим шестнадцатиразрядную сетку размером в 2 байта = 16 бит (рис. 1).

Рис. 1. Шастнадцатиразрядная сетка 3. Впишем число 110010001112, начиная с младшего разряда (рис. 2).

Рис. 2. Запись числа в сетку 4. Заполним оставшиеся разряды нулями (рис. 3).

Рис. 3. Заполнение оставшихся разрядов нулями На рисунке 3 изображено внутреннее представление числа N = 160710 в двухбайтовой разрядной сетке.

Пример 4. Представить отрицательное число N = -160710 в двухбайтовой разрядной сетке.

1. Переведём модуль числа -160710 в двоичную систему счисления. 160710 = 110010001112.

2. Изобразим шестнадцатиразрядную сетку (рис. 1).

3. Следуя пунктам 3-4 из примера 3, получим внутреннее представление модуля числа. 0000 0110 0100 0111 — прямой код числа.

4. Найдём обратный код числа, заменив в прямом коде нули на единицы, а единицы на нули: 1111 1001 1011 1000 — обратный код.

5. Найдём дополнительный код числа, прибавив к обратному коду единицу:

1111 1001 1011 1000 1

1111 1001 1011 1001 — дополнительный код

6. Впишем дополнительный код в разрядную сетку (рис. 4).

Рис. 4. Представление целого отрицательного числа 28

Внутреннее представление отрицательного числа N = -160710 в двухбайтовой разрядной сетке изображено на рисунке 4. Описанный в примере 4 способ представления целого отрицательного числа называют дополнительным кодом. Старший разряд в представлении любого отрицательного числа равен 1. Его принято называть знаковым разрядом, так как он указывает на знак числа.

Возникает вопрос, с какой целью отрицательные числа записываются в виде дополнительного кода и как получить дополнительный код отрицательного числа? Дополнительный код используется для упрощения выполнения арифметических операций. Если бы вычислительная машина работала с прямыми кодами положительных и отрицательных чисел, то при выполнении арифметических операций следовало бы выполнять ряд дополнительных действий. Например, при сложении нужно было бы проверять знаки обоих операндов и определять знак результата. Если знаки одинаковые, то вычисляется сумма операндов и ей присваивается тот же знак. Если знаки разные, то из большего по абсолютной величине числа вычитается меньшее и результату присваивается знак большего числа. То есть при таком представлении чисел (в виде только прямого кода) операция сложения реализуется через достаточно сложный алгоритм. Если же отрицательные числа представлять в виде дополнительного кода, то операция сложения, в том числе и разного знака, сводится к их поразрядному сложению. Алгоритм получения дополнительного кода положительного и отрицательного числа описан в практикуме по информатике [5].

Таким образом, применение дополнительного кода для внутреннего представления отрицательных чисел даёт возможность заменить операцию вычитания операцией сложения с отрицательным числом: N — М = N + (-М). Очевидно, должно выполняться следующее равенство: N + (- Ы) = 0. Выполним такое сложение для полученных выше чисел 1607 и -1607.

_ 0000 0110 0100 0111 _ 1607

1111 1001 1011 1000 1607

1 0000 0000 0000 0000 0

Единица в старшем разряде, получаемая при сложении, выходит за границу разрядной сетки машинного слова и исчезает, а в памяти остаётся ноль.

Перейдём к кодированию вещественных чисел. Недостатком представления чисел в формате с фиксированной запятой является конечный диапазон представления величин, недостаточный для решения математических, физических, экономических и других задач, в которых используются как очень малые, так и очень большие числа. Поэтому для представления вещественных чисел используют другой формат — формат с плавающей точкой (запятой). Число обычной точности в данном формате занимает в памяти компьютера четыре байта, а в случае представления числа двойной точности — восемь байт.

Кодирование вещественных чисел опирается на их нормализованную (экспоненциальную) запись. Как и для целых чисел, при представлении действительных чисел в памяти компьютера используется двоичная система счисления, следовательно, предварительно десятичное число должно быть переведено в двоичную систему.

При представлении чисел с плавающей запятой часть разрядов ячейки отводится для записи порядка числа, остальные разряды — для записи мантиссы. По одному разряду в каждой группе отводится для изображения знака порядка и знака мантиссы. Для того чтобы не хранить знак порядка, был придуман так называемый смещённый порядок (СП) [5]. Он рассчитывается по формуле СП = р + 272, где а — количество разрядов, отводимых под порядок.

Запишем алгоритм представления числа с плавающей точкой (запятой):

1) перевести число из системы счисления с основанием р в двоичную;

2) представить двоичное число в нормализованной экспоненциальной форме;

3) рассчитать смещённый порядок числа;

4) поместить знак, порядок и мантиссу в 32-разрядную сетку.

Пример 5. Представить число 25,324 в формате с плавающей точкой.

1. Переведём число в двоичную систему счисления.

0,32410=0,0101001011100011012. 25, 32410= 11001,0101001011100011012

2. Запишем представленное в двоичной системе счисления число в форме нормализованного двоичного числа с плавающей точкой:

11001,0101001011100011012 = 0,110010101001011100011012 ■ 10101

3. Вычислим смещённый порядок:

СП = 1012 + 10000002= 1000101

4. Запишем представление числа в ячейке памяти (рис. 5).

0 1|о|о|о|1|о|1 1 | 1 | 0| 0| 1 I 0 I 1 I 0 I 1 I 0 I 0| 1 I 0 I 1 I 1 I 1 I 1 I 0 I 0 I 0| 1 I 1 I 0 I 1 1

Смещенный порядок Мантисса |

| Знак числа ‘[‘Знак мантиссы

Рис. 5. Представление числа в ячейке памяти 29

Можно заметить, что представление действительного числа не очень удобно изображать в двоичной системе, поэтому с практической точки зрения используют взаимное преобразование двоичных, восьмеричных и шестнадцатеричных чисел [6]. Искомый результат в шестнадцатеричной форме будет иметь вид 45CA978D.

Для того чтобы получить внутреннее представление отрицательного числа -25,324, достаточно в полученном выше коде заменить в знаке разряда число 0 на 1 (рис. 6), шестнадцатеричная форма будет иметь вид: C5CA978D.

Рис. 6. Представление числа -25,324 в ячейке памяти

Рассмотрим вопрос о диапазоне вещественных чисел. Максимальное число, представленное в формате с плавающей точкой, — это число с самой большой мантиссой и самым большим порядком:

Если перевести в десятичную систему, то получится

i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

R max =(1 — 2 -24 )x 2 64 «10 19 .

Множество вещественных чисел, представляемых в памяти ЭВМ в формате с плавающей точкой, является ограниченным и дискретным. Каждое следующее значение получается прибавлением к мантиссе предыдущего единицы в последнем разряде. В учебнике [1] указывается формула, которая позволяет вычислить количество вещественных чисел, точно представимых в памяти машины:

В приведённой формуле t — количество двоичных разрядов мантиссы; U — максимальное значение математического порядка; L — минимальное значение порядка. Все числа, не попадающие во множество вещественных чисел, точно представимых в памяти машины, представляются в ней приближённо. При этом мантисса обрезается на последнем разряде. Результаты вычислений с такими числами будут содержать погрешность. Отсюда следует вывод: вычисления с вещественными числами в компьютере выполняются приблизительно.

1. Семакин, И. Г. Информатика. Базовый курс для 7-9 классов / И. Г. Семакин, Л. А. Залогова, С. В. Русаков, Л. В. Шестакова. — М.: Лаборатория Базовых Знаний, 2000. — С. 316-321.

2. Касаткин, В. Н. Информация, алгоритмы, ЭВМ: пособие для учителя / В. Н. Касаткин. — М.: Просвещение, 1991. — С. 52-53.

3. Семёнов, А. И. Информатика: Практикум / под ред. А. И. Семёнова / А. И. Семёнов. — Абакан: Изд-во ХГУ им. Н. Ф. Катанова, 2003. -С. 9-12.

4. Соколова, О. Л. Универсальные поурочные разработки по информатике: 10 класс / О. Л. Соколова. — М.: ВАКО, 2007. — С. 226-232.

5. Могилёв, А. В. Практикум по информатике: учеб. пособие для студ. высш. учеб. заведений / А. В. Могилёв, Н. И. Пак, Е. К. Хеннер; под ред. Е. К. Хеннера. — 5-е изд., стер. — М.: Издательский центр «Академия», 2009. — С. 33-36.

6. Могилёв, А. В. Информатика: учеб. пособие для студ. пед. вузов / А. В. Могилёв, Н. И. Пак, Е. К. Хеннер; под ред. Е. К. Хеннера. -7-е изд., стер. — М.: Издательский центр «Академия», 2009. — С. 28-33.

© Итпекова Г. С., 2013

ГИБРИДИЗАЦИЯ КАК ОДИН ИЗ ВЕДУЩИХ ТВОРЧЕСКИХ МЕТОДОВ СОЗДАНИЯ ДИЗАЙНЕРСКОЙ ИНФОГРАФИКИ

Научный руководитель — А. Н. Лаврентьев, доктор искусствоведения, профессор кафедры коммуникативного дизайна

МГХПА им. С. Г. Строганова Московская государственная художественно-промышленная академия (МГХПА) им. С. Г. Строганова

Учитывая богатый визуальный ряд электронных и печатных СМИ, автор выделяет такой творческий метод создания информационной графики, как гибридизация, и теоретически обосновывает её сущность, описывая три вида гибридизации: внутривидовую, межвидовую и комплексную.

Ключевые слова: инфографика, гибридная инфографика, гибридизация инфографики, виды гибридизации, внутривидовая гибридизация, межвидовая гибридизация, комплексная гибридизация.

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

Для инфографа (иначе — дизайнера инфографики) гибридизация является одним из важнейших творческих инструментов дизайна, не случайно мы считаем её одним из ведущих способов разработки дизайнерских ин-

Представление числовых данных в памяти ЭВМ

♦ представление целых чисел;
♦ размер ячейки и диапазон значений чисел;
♦ особенности работы компьютер с целыми числами;
♦ представление вещественных чисел;
♦ особенности работы компьютера с вещественными числами.

Любая информация в памяти компьютера представляется в двоичном виде: последовательностью нулей и единиц. Исторически первым типом данных, с которыми стали работать компьютеры были числа. Теперь это и числа, и тексты, и изображение, и звук. Работа с данными любого типа в конечном счете сводится к обработке двоичных чисел — чисел, записываемых с помощью двух цифр — 0 и 1. Поэтому современные компьютерные технологииназывают цифровыми технологиями.

В компьютере различаются два типа числовых величин: целые числа и вещественные числа. Различаются способы их представления в памяти компьютера.

Представление целых чисел

Часть памяти, в которой хранится одно число, будем называть ячейкой. Минимальная ячейка, в которой может храниться целое число, имеет размер 8 битов — 1 байт. Получим представление десятичного числа 25 в такой ячейке. Для этого нужно перевести число в двоичную систему счисления. Как это делается, вы уже знаете. Результат перевода:

Теперь осталось «вписать» его в восьмиразрядную ячейку (записать так называемое внутреннее представление числа). Делается это так:

Число записывается «прижатым» к правому краю ячейки (в младших разрядах). Оставшиеся слева разряды (старшие) заполняются нулями.

Самый старший разряд — первый слева, хранит знак числа. Если число положительное, то в этом разряде ноль, если отрицательное — единица. Самому большому положительному целому числу соответствует следующий код:

Чему он равен в десятичной системе? Можно расписать это число в развернутой форме и вычислить выражение. Но можно решить задачу быстрее. Если к младшему разряду этого числа прибавить единицу, то получится число 10000000. В десятичной системе оно равно 2 7 = 128. Значит:

011111112 = 128 — 1 = 127.

Максимальное целое положительное число, помещающееся в 8-разрядную ячейку, равно 127.

Теперь рассмотрим представление целых отрицательных чисел. Как, например, в 8-разрядной ячейке памяти будет представлено число -25? Казалось бы, очевидным ответом является следующий: нужно в представлении числа 25 заменить старший разряд с 0 на 1. К сожалению, в компьютере все несколько сложнее.

Для представления отрицательных целых чисел используется дополнительный код.

Получить дополнительный код можно по следующему алгоритму:

1) записать внутреннее представление положительного числа X;
2) записать обратный код этого числа заменой во всех разрядах 0 на 1 и 1 на 0;
3) к полученному числу прибавить 1.

Определим по этим правилам внутреннее представление числа -2510 в 8-разрядной ячейке:

1) 00011001
2) 11100110
3) +1
11100111 — это и есть представление числа -25.

В результате выполнения такого алгоритма единица в старшем разряде получается автоматически. Она и является признаком отрицательного значения.

Проверим полученный результат. Очевидно, что при сложении чисел +25 и -25 должен получиться ноль.

00011001
+11100111
1 00000000

Единица в старшем разряде, получаемая при сложении, выходит за границу ячейки и исчезает. В ячейке остается ноль!

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

Представление восьмиразрядного отрицательного числа -X дополняет представление соответствующего положительного числа +Х до значения 2 6 .

Размер ячейки к диапазон значений чисел

Наибольшее по модулю отрицательное значение в 8-разрядной ячейке равно -2 7 = -128. Его внутреннее представление: 10000000. Таким образом, диапазон представления целых чисел в восьмиразрядной ячейке следующий:

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

Теперь становится очевидной обобщенная формула для диапазона целых чисел в зависимости от разрядности N ячейки:

Диапазон для 32-разрядной ячейки получается достаточно большим:

Особенности работы компьютера с целыми числами

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

Представление вещественных чисел

Целые и дробные числа в совокупности называются вещественными числами. В математике также используется термин «действительные числа». Решение большинства математических задач сводится к вычислениям с вещественными числами.

Всякое вещественное число (X) можно записать в виде произведения мантиссы m и основания системы счисления р в некоторой целой степени n, которую называют порядком:

Например, число 25,324 можно записать в таком виде: 0,25324 · 10 2 . Здесь m = 0,25324 — мантисса, n = 2 — порядок. Порядок указывает, на какое количество позиций и в каком направлении должна сместиться десятичная запятая в мантиссе.

Чаще всего для хранения вещественных чисел в памяти компьютера используется либо 32-разрядная, либо 64-разрядная ячейка. Первый вариант называется представлением с обычной точностью, второй — представлением с удвоенной точностью. В ячейке хранятся два числа в двоичной системе счисления: мантисса и порядок. Здесь мы не будем подробно рассматривать правила представления вещественных чисел. Отметим лишь основные следствия, вытекающие из этих правил, которые важно знать пользователю компьютера, занимающемуся математическими вычислениями.

Особенности работы компьютера с вещественными числами

1. Диапазон вещественных чисел ограничен. Но он значительно шире, чем для рассмотренного ранее способа представления целых чисел. Например, при использовании 32-разрядной ячейки этот диапазон следующий:

2. Выход за диапазон (переполнение) — аварийная ситуация для процессора, который прерывает свою работу.
3. Результаты машинных вычислений с вещественными числами содержат погрешность. При использовании удвоенной точности эта погрешность уменьшается.

Коротко о главном

В памяти компьютера целые числа представляются в двоичной системе счисления и могут занимать ячейку размером 8, 16, 32 и т. д. битов.

Диапазон значений целых чисел ограничен. Чем больше размер ячейки, тем шире диапазон.

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

Вещественные числа представляются в виде совокупности мантиссы и порядка в двоичной системе счисления. Обычный размер ячейки — 32 или 64 бита.

Результаты вычислений с вещественными числами приближенные. Переполнение приводит к прерыванию работы процессора.

Вопросы и задания

1. Как в памяти компьютера представляются целые положительные и отрицательные числа?
2. Укажите, каков был бы диапазон значений целых чисел, если бы для их хранения использовалась 4-разрядная ячейка.
3. Запишите внутреннее представление следующих десятичных чисел, используя 8-разрядную ячейку.
а) 32; б) -32; в) 102; г) -102; д) 126; е) -126.
4. Определите, каким десятичным числам соответствуют следующие двоичные коды 8-разрядного представления целых чисел.
а) 00010101; б) 11111110; в) 00111111; г) 10101010.

Представление числовых данных в памяти ЭВМ

Цель работы: ознакомить студентов с представлением чисел в компьютере.

Теоретические сведения

Представление целых чисел

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

Если для представления числа в компьютере выделить 2 бита, то можно представить всего четыре разных числа: 00, 01, 10 и 11. Если для представления числа выделить 3 бита, то можно представить 8 разных чисел: 000, 001, 010, 011, 100, 101, 110, 111. Если же для представления числа выделить N битов, то можно представить 2 n разных чисел.

Пусть для представления числа используется 1 байт (8 битов). Тогда можно представить: 2 8 =256 разных чисел: от 0000 0000 до 1111 1111.Если перевести эти числа в десятичную систему, получится: 000000002=010, 111111112=25510. Значит при использовании для представления числа 1 байта можно представить числа от 0 до 255.

Для того чтобы в компьютере можно было представить как положительные, так и отрицательные числа, используются следующие правила:

1. Самый старший (левый) бит числа является знаковым. Если этот бит равен 0, число положительное. Если же он равен 1, число отрицательное.

2. Числа хранятся в дополнительном коде.

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

Например, если число 37(10) = 100101(2) объявлено величиной типа Integer (шестнадцатибитовое со знаком), то его прямым кодом будет 0000000000100101, а если величиной типа LongInt (тридцатидвухбитовое со знаком), то его прямой код будет 00000000000000000000000000100101. Для более компактной записи чаще используют шестнадцатеричное представление кода. Полученные коды можно переписать соответственно как 0025(16) и 00000025(16).

Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму:

1. Записать прямой код модуля числа;

2. Инвертировать его (заменить единицы нулями, нули – единицами);

3. Прибавить к инверсному коду единицу.

При получении числа по его дополнительному коду прежде всего необходимо определить его знак. Если число окажется положительным, то просто перевести его код в десятичную систему счисления. В случае отрицательного числа необходимо выполнить следующий алгоритм:

1. Вычесть из кода числа 1;

2. Инвертировать код;

3. Перевести в десятичную систему счисления. Полученное число записать со знаком минус.

Практические примеры

Для примеров с 1 – 7 предполагаем, что для представления числа в памяти компьютера используются 1 байт (8 битов).

Пример 1

Определить, является ли число 101101 положительным или отрицательным

1)Допишем слева недостающие нули, так чтобы в представлении числа было ровно 8 битов:00101101

2)Самый левый бит равен 0, значит число положительное: 00101101

Ответ: число 101101 – число положительное.

Пример 2

Определить, является число 10111011 положительным или отрицательным.

1) Допишем слева недостающие нули так, чтобы число было 8 битов. Здесь число уже содержит 8 цифр, поэтому нули добавлять не надо: 10111011

2) Самый левый бит равен 1, значит число отрицательное: 10111011

Ответ: 10111011 – число отрицательное.

Пример 3

Как будет представлено в памяти компьютера число 26 ?

1) Переводим число 26 в двоичную систему:

2) Допишем слева недостающие нули, так чтобы в представлении числа было ровно 8 цифр:00011010.

3) 26 – число положительное (левый бит равен 0), значит, его дополнительный код равен двоичному представлению, т.е. 00011010

Ответ: 26 будет представлено в памяти компьютера как 00011010.

Пример 4

Как будет представлено в памяти компьютера число –18 ?

1) Переведем модуль числа –18 в двоичную систему:

2) Допишем слева недостающие нули так, чтобы в представлении числа было равно 8 цифр: 00010010.

3) –18 число отрицательное. Определим его дополнительный код

а) меняем нули на единицы, а единицы на нули:

б) к получившемуся числу прибавляем 1: ;

Ответ: –18 будет представлено в компьютере как 11101110.

Пример 5

Что означает число 11011, хранящееся в памяти компьютера?

1) Допишем слева недостающие нули, так чтобы было ровно 8 цифр: 00011011

2) Это число положительное, его дополнительный код совпадает с двоичным представлением

3) Переведем число 11011 из двоичной системы в десятичную: 1 × 24 + 1 × 23 + 0 × 22 + 1 × 20 = 16 + 8 + 2 + 1 = 27

Ответ: число 11011 означает 27.

Пример 6

Что означает число 11110111, хранящееся в памяти компьютера?

1) Допишем слева недостающие нули, так чтобы число содержало 8 цифр (здесь и так 8 цифр, ничего дописывать не надо): 11110111;

2) Это число отрицательное, значит, надо от дополнительного кода, в котором число представлено в памяти компьютера, перейти к двоичному представлению:

а) меняем нули на единицы, а единицы на нули: 11110111 – > 00001000

б) к получившемуся числу прибавляем 1 ;

3) Получившееся число переводим

в десятичную систему:

1 × 2 3 + 0 × 2 2 + 0 × 2 1 + 1 × 2 0 = 8 + 1 = 9 ;

4) Мы нашли модуль числа, но у нас число отрицательное, значит, надо перед числом поставить знак «», получим 9 .

Ответ: число 11110111 означает – 9.

Пример 7

Что означает число 9616 ?

1) Переведем в двоичную систему: 9216 – 100100102 ;

2) Число отрицательное, перейдем от дополнительного кода к двоичному представлению:

в десятичную систему

1 × 2 6 + 1 × 2 5 + 0 × 2 4 + 1 × 2 3 + 1 × 2 2 + 1 × 2 1 + 0 × 2 0 =

= 64 + 32 + 8 + 4 + 2 = 110;

4) Число отрицательное, ставим перед ним знак « – ».

Ответ: 9216 означают число – 110.

Пример 8

Для представления числа в памяти компьютера используются 32 байта. Как будет представлено в памяти компьютера – 37?

Запишем дополнительный код числа – 37, интерпретируя его как величину типа LongInt (тридцатидвухбитовое со знаком):

1. Прямой код числа 37 есть 00000000000000000000000000100101;

2. Инверсный код 11111111111111111111111111011010;

3. Дополнительный код 11111111111111111111111111011011 или FFFFFFDB(16).

Пример 9

Запишем числа, соответствующие дополнительным кодам:

1. 0000000000010111. Поскольку в старшем разряде записан нуль, то результат будет положительным. Это код числа 23;

2. 1111111111000000. Здесь записан код отрицательного числа. Исполняем алгоритм:

Пример 10

Выполнить арифметическое действие 300010500010в 16-разрядном компьютерном представлении.

Представим положительное число в прямом, а отрицательное число в дополнительном коде:

Сложим прямой код положительного числа с дополнительным кодом отрицательного числа. Получим результат в дополнительном коде:

Переведем полученный дополнительный код в десятичное число:

1) инвертируем дополнительный код: 0000011111001111;

2) прибавим к полученному коду 1 и получим модуль отрицательного числа:

3) переведем в десятичное число и припишем знак отрицательного числа: – 2000.

Итак все что хранится в памяти компьютера представлено в виде чисел

Существуют два способа представления чисел в памяти ЭВМ. Они называются так: форма с фиксированной точкой и форма с плавающей точкой. Форма с фиксированной точкой применяется к целым числам, форма с плавающей точкой — к вещественным числам (целым и дробным). Под точкой здесь подразумевается знак-разделитель целой и дробной части числа.

Разберемся, как представляются отрицательные числа. Казалось бы, для этого достаточно заменить 0 на 1 в старшем (31-м) разряде ячейки памяти. Однако реально это делается несколько сложнее. Для представления отрицательных целых чисел используется дополнительный код.

Дополнительным кодом двоичного числа X в N-разрядной ячейке является число, дополняющее его до значения 2.

    Получить дополнительный код можно следующим путем:
  1. записать внутреннее представление положительного числа X;
  2. записать обратный код этого числа заменой во всех разрядах 0 на 1 и 1 на 0;
  3. к полученному числу прибавить 1.
00000000 00000000 00010101 1111110
11111111 11111111 11101010 00000011
11111111 11111111 11101010 00000100

Шестнадцатеричная форма результата:

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

Почему отрицательные числа представляются в дополнительном коде? Дело в том, что в этом случае операция вычитания двух чисел сводится к сложению с дополнительным кодом вычитаемого, и процессору достаточно уметь лишь складывать числа. В самом деле:

Если значение (-В) будет иметь форму дополнительного кода, то в памяти ЭВМ получится правильный результат.

Проверим, действительно ли в ячейке памяти получится О в результате сложения числа 5628 с числом -5628 в форме дополнительного кода.

00000000 00000000 00010101 11111100 + 11111111 11111111 11101010 000000100 =

1 00000000 00000000 00000000 00000000

Что и требовалось доказать! Единица в старшем разряде, получаемая при сложении, выходит за границу разрядной сетки машинного слова и исчезает.

Двоичное 32-разрядное число 231 является «отрицательным самому себе». Получим его дополнительный код:

Полученный код используется для представления значения

Следовательно, диапазон представления целых чисел в 32-разрядном машинном слове:

В общем случае для N-разрядного машинного слова этот диапазон такой:

В современных компьютерах часто используется 16- разрядное представление целых чисел. В этом случае их диапазон следующий:

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

Вещественные числа. Числовые величины, которые могут принимать любые значения (целые и дробные) называются вещественными числами. В математике также используется термин «действительные числа». Решение большинства математических задач сводится к вычислениям с веществен-ными числами. Как же такие числа представляются в памяти компьютера?

Вещественные числа в памяти компьютера представляются в форме с плавающей точкой.

Форма с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления р в некоторой целой степени n, которую называют порядком:

Например, число 25,324 можно записать в таком виде: 0.25324х102. Здесь m=0.25324 — мантисса, n=2 — порядок. Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть», т.е. сместиться десятичная точка в мантиссе. Отсюда название «плавающая точка».

Однако справедливы и следующие равенства:

25,324 = 2,5324*101 = 0,0025324*104 = 2532,4*102 и т.п.

Получается, что представление числа в форме с плавающей точкой неоднозначно? Чтобы не было неоднозначности, в ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализован-ном представлении должна удовлетворять условию:

Иначе говоря, мантисса меньше единицы и первая значащая цифра — не ноль. Значит для рассмотренного числа нормализованным представлением будет: 0.25324 * 102. В разных типах ЭВМ применяются различные варианты представления чисел в форме с плавающей точкой. Для примера рассмотрим один из возможных. Пусть в памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (р=2) и занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы. Вот как эта информация располагается в ячейке:

± машинный порядок

&nbsp &nbsp &nbsp &nbsp М А

Н Т И С

С А&nbsp &nbsp &nbsp

&nbsp&nbsp&nbsp&nbsp&nbsp1-й байт &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 2-й байт&nbsp&nbsp&nbsp 3-й байт &nbsp 4-й байт&nbsp&nbsp

В старшем бите 1-го байта хранится знак числа. В этом разряде 0 обозначает плюс, 1 — минус. Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы.

Что такое машинный порядок? В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. В десятичной системе это соответствует диапазону от 0 до 127. Всего 128 значений. Знак порядка в ячейке не хранится. Но порядок, очевидно, может быть как положительным так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка. В таком случае между машинным порядком и истинным (назовем его математическим) устанавливается следующее соответствие:

Машинный порядок 0 1 2 3 . 64 65 . 125 126 127
Математический порядок -64 -63 -62 -61 . 0 1 . 61 62 63

Если обозначить машинный порядок Мр, а математический — р, то связь между ними ыразится такой формулой:

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

Полученная формула записана в десятичной системе. Поскольку 6410=4016 (проверьте!), то в шестнадцатеричной системе формула примет вид:

И, наконец, в двоичной системе:

    Теперь мы можем записать внутреннее представление числа 25,324 в форме с плавающей точкой.
  1. Переведем его в двоичную систему счисления с 24 значащими цифрами. 25,32410= 11001,01010010111100011012
  2. Запишем в форме нормализованного двоичного числа с плавающей точкой: 0,110010101001011110001101*10 101 Здесь мантисса, основание системы счисления (210=102) и порядок (510=1012)записаны в двоичной системе.
  3. Вычислим машинный порядок. Мр2 = 101 + 100 0000 = 100 0101
  4. Запишем представление числа в ячейке памяти.

01000101 11001010 10010111 10001101

Это и есть искомый результат. Его можно переписать в более компактной шестнадцатеричной форме:

45 CA 97 8D

Для того, чтобы получить внутреннее представление отрицательного числа -25,324,достаточно в полученном выше коде заменить в разряде знака числа 0 на 1.

11000101 11001010 10010111 10001101

А в шестнадцатеричной форме:

C5 CA 97 8D

Никакого инвертирования, как для отрицательных чисел с фиксированной точкой, здесь не происходит.

Рассмотрим, наконец, вопрос о диапазоне чисел, представимых в форме с плавающей точкой. Очевидно, положительные и отрицательные числа расположены симметрично относительно нуля. Следовательно, максимальное и минимальное числа равны между собой по модулю: Rmax = |Rmin|. Наименьшее по абсолютной величине число равно нулю. Чему же равно Rmax? Это число с самой большой мантиссой и самым большим порядком:

Если перевести в десятичную систему, то получится

Rmax = (1 — 2 -24 ) * 2 64 = 10 19

Очевидно, что диапазон вещественных чисел значительно шире диапазона целых чисел. Если в результате вычислений получается число по модулю большее, чем Rmax, то происходит прерывание работы процессора. Такая ситуация называется переполнением при вычислениях с плавающей точкой. Наименьшее по модулю ненулевое значение равно:

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

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

N = 2 t * ( U — L+ 1) + 1.

Здесь t — количество двоичных разрядов мантиссы; U — максимальное значение математического порядка; L — минимальное значение порядка. Для рассмотренного нами варианта (t = 24, U = 63, L = -64) получается:

N = 2 146 683 548.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *