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

целые положительные числа (без знака)

целые со знаком

вещественные нормализованные числа. (иррац (бесконечные непериодические дроби, Пи, корень из двух..) и рацион (m/n или бесконечные периодические дроби))

Целые числа без знака.

Память в компьютере имеет байтовую структуру. Целые без знака обычно занимают один, два или более байт. В однобайтовом формате они могут принимать значения в диапазоне от 0 до 255, в двухбайтовом от 0 до 65535. Здесь попытка представить в байтовом формате число 258 будет интерпретироваться как ошибка.

Представляются целые числа без знака в своем двоичном виде.

в байтовом формате:

Над целыми числами определены операции сложения (по правилам двоичного сложения) и умножения (по правилам двоичного умножения). Определены именно эти операции, так как они не меняют тип результата. Вычитание и деление не определены.

Целые числа со знаком

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

При кодировании прямым n-разрядным двоичным кодом один разряд (как правило самый старший) отводится для знака числа. Остальные n-1 разрядов – для значащих цифр. Значение знакового разряда равно 0 для положительных чисел, 1 – для отрицательных.

Пример: 1 = 0000 0001, -1 = 1000 0001

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

код модуля: 00000001

обратный код: 11111110

Отрицательные числа в компьютерах представляются в ДОПОЛНИТЕЛЬНОМ КОДЕ . Для получения дополнительного кода двоичного числа необходимо инвертировать это число (заменить все 0 на 1, а 1 на 0) , т.е получить обратный код числа, а затем прибавить в младшем разряде 1.

Например: Используется 6 разрядное представление двоичных чисел. 7 = 000111; -7 = 111001 – это дополнительный код.

Дополнительный код получен так:

1) инверсия 000111 равна 111000:

111001 – это представление числа -7 в дополнительном коде.

При таком представлении чисел вычитание двух чисел А – В выполняется как сложение А + (-В).

Например: 001100 = 12

111001 = -7 в дополнительном коде

единица переноса в старший разряд при выполнении операции

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

Пример: Для числа -1101:

Замечание: для положительных чисел представление числа в прямом, обратном и дополнительном кодах совпадают. Т. образом – положительные числа всегда изображаются одинаково – двоичными кодами с цифрой 0 в знаковом разряде.

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

Сдвиг числа на один разряд влево увеличивает число в 2 раза; сдвиг на один разряд вправо – уменьшает его в 2 раза:

В компьютерах числа представляются в двоичной форме с определенным количеством разрядов. Обычно разрядность компьютеров равна одному из следующих значений: 8, 16, 32, 64.

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

Например, если разрядность компьютера равна 16, то количество различных двоичных последовательностей будет равно

2 16 = 2 6+10 = 64 * 1024 = 65536.

Для кодирования чисел в компьютере существуют два основных формата: для кодирования целых чисел и для задания действительных чисел — представление числа в формате с плавающей точкой. Рассмотрим кодирование целых чисел.

Для каждого числа в памяти компьютера отводится К ячеек (8, 18, 24, 32). В К-разрядной ячейке может храниться 2 k различных значений целых чисел .

В 8 разрядной ячейке может храниться число в диапазоне от 0 до 255 или от ‑128 до 127 (всего 256=2 8 чисел).

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

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

2) полученный результат дополнить слева незначащими нулями до К разрядов.

Для записи целого отрицательного числа (-N) необходимо:

1) получить внутреннее представление положительного числа N; или прямой код числа

2) обратный код этого числа заменой 0 на 1 и 1 на 0;

3) полученному числу прибавить 1 (дополнительный код числа).

Запишем отрицательное число –126 в 8 битном формате.

Прямой код числа 126=0111 1110,

обратный код числа 1000 0001, после прибавления 1 получим дополнительный код -126=1000 0010

Запишем отрицательное число – 7в 8 битном формате.

Прямой код числа 7=0000 0111,

обратный код числа 1111 1000, после прибавления 1 получим дополнительный код -7=1111 1001

Формат с плавающей точкой

использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления n в некоторой целой степени p (основание системы счисления), которую называют порядком: R = m * n p. Представление числа в форме с плавающей точкой неоднозначно.

Пример 4. Справедливы следующие равенства:

52.345 = 0.0052345 x 10 4 = 5234.5 x 10 -2 = 0.52345 x 10 2

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

Для автоматизации работы с различными данными (числовыми, текстовыми, звуковыми и др.) используется прием кодирования – выражение одного типа данных через данные другого типа. Так, естественный человеческий язык представляет собой систему кодирования понятий для выражения мыслей посредством речи, система кодирования Брайля используется у слепых. Разные системы кодирования успешно применяются в различных отраслях техники, науки, экономики.

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

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

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

Числовую информацию компьютер обрабатывает в двоичной системе счисления. Таким образом, числа в компьютере представлены последовательностью цифр 0 и 1, называемых битами (бит – один разряд двоичного числа). В начале 1980-х гг. процессоры для персональных компьютеров были 8-разрядными, и за один такт работы процессора компьютер мог обработать 8 бит, т.е. максимально обрабатываемое десятичное число нс могло превышать 111111112 (или 25510). Последовательность из восьми бит называют байтом, т.е. 1 байт = 8 бит. Затем разрядность процессоров росла, появились 16-, 32- и, наконец, 64-разрядные процессоры для персональных компьютеров, соответственно возросла и величина максимального числа, обрабатываемого за один такт.

Использование двоичной системы для кодирования целых и действительных чисел позволяет с помощью 8 разрядов кодировать целые числа от 0 до 255, 16 бит дает возможность закодировать более 65 тыс. значений.

В ЭВМ применяются две формы представления чисел:

  • естественная форма, или форма с фиксированной запятой. В этой форме числа изображаются в виде последовательности цифр с постоянным для всех чисел положением запятой, отделяющей целую часть от дробной, например +00456,78800; +00000,00786; -0786,34287. Эта форма неудобна для вычислений и применяется только как вспомогательная для целых чисел;
  • нормальная форма, или форма с плавающей точкой. В этой форме число выражается с помощью мантиссы и порядка как N = ±Μ • Р±r, где Μ – мантисса числа (|M|

Используя n бит, можно записывать двоичные коды чисел от 0 до 2n-1, всего 2n чисел.

1) Кодирование положительных чисел: Для записи положительных чисел в байте заданное число слева дополняют нулями до восьми цифр. Эти нули называют незначимыми.

Например: записать в байте число 1310 = 11012
Результат: 00001101

2) Кодирование отрицательных чисел: Наибольшее положительное число, которое можно записать в байт, — это 127, поэтому для записи отрицательных чисел используют числа с 128-го по 255-е. В этом случае, чтобы записать отрицательное число, к нему добавляют 256, и полученное число записывают в ячейку.

1.6.2. КОДИРОВАНИЕ ТЕКСТА.

Соответствие между набором букв и числами называется кодировкой символа. Как правило, код символа хранится в одном байте, поэтому коды символов могут принимать значение от 0 до 255. Такие кодировки называют однобайтными. Они позволяют использовать 256 символов. Таблица кодов символов называется ASCII (American StandardCodeforInformationInterchange- Американский стандартный код для обмена информацией) . Таблица ASCII-кодов состоит из двух частей:

Коды от 0 до 127 одинаковы для всех IBM-PC совместимых компьютеров и содержат:
# коды управляющих символов;
# коды цифр, арифметических операций, знаков препинания;
# некоторые специальные символы;
# коды больших и маленьких латинских букв.

Вторая часть таблицы (коды от 128 до 255) бывает различной в различных компьютерах. Она содержит:
# коды букв национального алфавита;
# коды некоторых математическихсимволов;
# коды символов псевдографики.

В настоящее время все большее распространение приобретает двухбайтная кодировка Unicode. В ней коды символов могут принимать значение от 0 до 65535.

1.6.3. КОДИРОВАНИЕ ЦВЕТОВОЙ ИНФОРМАЦИИ.

Одним байтом можно закодировать 256 различных цветов. Это достаточно для рисованных изображений типа мультфильмов, но не достаточно для полноцветных изображений живой природы. Если для кодирования цвета использовать 2 байта, можно закодировать уже 65536 цветов. А если 3 байта – 16,5 млн. различных цветов. Такой режим позволяет хранить, обрабатывать и передавать изображения, не уступающие по качеству наблюдаемым в живой природе.

Из курса физики известно, что любой цвет можно представить в виде комбинации трех основных цветов: красного, зеленого, синего (их называют цветовыми составляющими) . Если кодировать цвет точки с помощью 3 байтов, то первый байт выделяется красной составляющей, второй – зеленой, третий – синей. Чем больше значение байта цветовой составляющей, тем ярче этот цвет.

Белый цвет – у точки есть все цветовые составляющие, и они имеют полную яркость. Поэтому белый цвет кодируется так: 255 255 255. (11111111 11111111 11111111)

Черный цвет – отсутствие всех прочих цветов: 0 0 0. (00000000 00000000 00000000)

Серый цвет – промежуточный между черным и белым. В нем есть все цветовые составляющие, но они одинаковы и нейтрализуют друг друга.
Например: 100 100 100 или 150 150 150. (2-й вариант — ярче) .

Красный цвет – все составляющие, кроме красной, равны 0. Темно-красный: 128 0 0. Ярко-красный: 255 0 0.

Зеленый цвет – 0 255 0.

Синий цвет – 0 0 255.

1.6.4. КОДИРОВАНИЕ ГРАФИЧЕСКОЙ ИНФОРМАЦИИ.

Рисунок разбивают на точки. Чем больше будет точек, и чем мельче они будут, тем точнее будет передача рисунка. Затем, двигаясь по строкам слева направо начиная с верхнего левого угла, последовательно кодируют цвет каждой точки. Для черно-белой картинки достаточно 1 байта для точки, для цветной – до 3-х байт для одной точки.