Представление чисел в компьютере (§ 5)


Планирование уроков на учебный год


Уроки 9 - 12
Представление чисел в компьютере (§ 5)










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

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

image

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

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

Правило № 2: представление данных в компьютере дискретно.

Правило № 3: множество представимых в памяти компьютера величин ограничено и конечно.

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


Сначала поясним на образном примере, что такое дискретность.

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

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

Первоначально человек оперировал лишь целыми положительными (натуральными) числами: 1, 2, 3, 4, ... . Очевидно, что натуральный ряд — это дискретное множество чисел.

В математике ряд натуральных чисел бесконечен и не ограничен. С появлением в математике понятия отрицательного числа (Р. Декарт, XVII век в Европе; в Индии значительно раньше) оказалось, что множество целых чисел не ограничено как «справа», так и «слева». Покажем это на числовой оси (рис. 1.6), символы оо обозначают бесконечность.

image

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

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

image

Самое большое по абсолютной величине (модулю) отрицательное число:

image

Аналогично дело обстоит и в компьютере.

Целые числа в компьютере


Правило № 4: в памяти компьютера числа хранятся в двоичной системе счисления*. С двоичной системой счисления вы знакомы из курса информатики 7-9 классов. Например, если под целое число выделяется ячейка памяти размером в 16 битов, то самое большое целое положительное число будет таким:

image

В десятичной системе счисления оно равно:

215 - 1 = 32 767.



* Конечно, и «внутри калькулятора» числа представляются в двоичном виде. Однако мы в это вдаваться не будем, рассмотрев лишь внешнее представление. Пример с калькулятором нам нужен был только для иллюстрации проблемы ограниченности.

Здесь первый бит играет роль знака числа. Ноль — признак положительного числа. Самое большое по модулю отрицательное число равно -32 768. Напомним (это было в курсе информатики основной школы), как получить его внутреннее представление:

1) перевести число 32 768 в двоичную систему счисления; это легко, поскольку 32 768 = 215:

1000000000000000;

2) инвертировать этот двоичный код, т. е. заменить нули на единицы, а единицы — на нули:

0111111111111111;

3) прибавить единицу к этому двоичному числу (складывать надо по правилам двоичной арифметики), в результате получим:

image

Единица в первом бите обозначает знак «минус». Не нужно думать, что полученный код — это «минус ноль». Этот код представляет число -32 768. Таковы правила машинного представления целых чисел. Данное представление называется дополнительным кодом.

Если под целое число в памяти компьютера отводится N битов, то диапазон значений целых чисел:

[-2N-1, 2N~1 - 1],

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

Мы рассмотрели формат представления целых чисел со знаком, т. е. положительных и отрицательных. Бывает, что нужно работать только с положительными целыми числами. В таком случае используется формат представления целых чисел без знака. В этом формате самое маленькое число — ноль (все биты — нули), а самое большое число для 16-разрядной ячейки:

image

В десятичной системе это 216 - 1 = 65 535, примерно в два раза больше по модулю, чем в представлении со знаком.

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

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

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

image

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


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

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

Снова для примера возьмем калькулятор с десятиразрядным индикаторным табло. Экспериментально докажем дискретность представления вещественных чисел. Выполним на калькуляторе деление 1 на 3. Из математики вам известно, что 1/3 — это рациональная дробь, представление которой в виде десятичной дроби содержит бесконечное количество цифр: 0,3333333333... (3 в периоде). На табло калькулятора вы увидите:

image

Первый разряд зарезервирован под знак числа. После запятой сохраняется 8 цифр, а остальные не вмещаются в разрядную сетку (так это обычно называют). Значит, это не точное значение, равное 1/3, а его «урезанное» значение.

Следующее по величине число, которое помещается в разрядную сетку:

image

Оно больше предыдущего на 0,00000001. Это шаг числовой последовательности. Следовательно, два рассмотренных числа разделены между собой конечным отрезком. Очевидно, что предыдущее число такое:

image

Оно тоже отделено от своего «соседа справа» по числовой оси шагом 0,00000001. Отсюда делаем вывод: множество вещественных чисел, представимых в калькуляторе, дискретно, поскольку числа отделены друг от друга конечными отрезками.

А теперь выясним вот что: будет ли шаг в последовательности вещественных чисел на калькуляторе постоянной величиной (как у целых чисел)?

Вычислим выражение 100000/3. Получим:

image

Это число в 100 000 раз больше предыдущего и, очевидно, тоже приближенное. Легко понять, что следующее вещественное число, которое можно получить на табло калькулятора, будет больше данного на 0,0001. Шаг стал гораздо больше.

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

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

image

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

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

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

Самое большое число у разных калькуляторов может оказаться разным. У самого простого это будет то же число, что мы получали раньше: 999999999. Если прибавить к нему единицу, то калькулятор выдаст сообщение об ошибке. А на другом, более «умном» и дорогом, калькуляторе прибавление единицы приведет к такому результату:

image

Данную запись на табло надо понимать так: 1 • 109.

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

Число, стоящее перед буквой «е», называется мантиссой, а стоящее после — порядком. «Умный калькулятор» перешел к представлению чисел в формате с плавающей запятой после того, как под формат с фиксированной запятой не стало хватать места на табло.

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

Но и для форматы с плавающей запятой тоже есть максимальное число. В нашем «подопытном» калькуляторе это число:

image

То есть 99999 • 1099. Самое большое по модулю отрицательное значение -99999 • 1099. Данные числа являются целыми, но именно они ограничивают представление любых чисел (целых и вещественных) в калькуляторе.

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

Рассмотрим пример: пусть под все число в компьютере выделяется 8 байтов — 64 бита, из них под порядок — 2 байта, под мантиссу — 6 байтов. Тогда диапазон вещественных чисел, в переводе в десятичную систему счисления, оказывается следующим:

±(5 • 10-324 - 1,7 • 10308).

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

image

image

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

1. Почему множество целых чисел, представимых в памяти компьютера, дискретно, конечно и ограничено?
2. Определите диапазон целых чисел, хранящихся в 1 байте памяти в двух вариантах: со знаком и без знака.
3. Получите внутреннее представление числа 157 в 8-разрядной ячейке памяти в формате со знаком.
4. Получите внутреннее представление числа -157 в 8-разрядной ячейке памяти в формате со знаком.
5. Почему множество действительных (вещественных) чисел, представимых в памяти компьютера, дискретно, конечно и ограничено?
6. На какие две части делится число в формате с плавающей запятой?



Практикум


Практическая работа № 1.3 "Представление чисел"


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

Задание 1


   Выписать алфавиты 2-ичной, 5-ричной, 8-ричной, 16-ричной систем счисления.

Задание 2


   Записать первые 20 чисел натурального числового ряда в 2-ичной, 5-ричной, 8-ричной, 16-ричной системах счисления.

Задание 3


   В каких системах счисления справедливо равенство:

   а) 2 • 2 = 10; б) 2 • 3 = 11; в) 3 • 3 = 13?

Задание 4


   Записать в развёрнутом виде числа.

A10 = 125,34; А8 = 125,34; А6 = 125,34; А16 = 125,34;

Пояснение. Развернутой формой записи числа называется запись вида:

image

   Здесь Aq - число, q - основание системы счисления, аi - цифры данной системы счисления, n - количество разрядов целой части числа, m - количество разрядов дробной части числа.

   Например:

26,38710 = 2 • 101 + 6 • 100 + 3 • 10-1 + 8 • 10-2 + 7 • 10-3;

101,112 = 1 • 22 + 0 • 21 + 1 • 20 + 1 • 2-1 + 1 • 2-2;

   В последнем примере использована десятичная развёрнутая форма записи двоичного числа.

Задание 5


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

image

Задание 6


   Перевести целые числа из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную системы:
   а) 856;   б) 664;   в) 5012;   г) 6435; д) 78.

Задание 7


   Перевести десятичные дроби в двоичную и восьмеричную системы счисления, оставив пять знаков в дробной части нового числа.
   а) 21,5;  б) 432,54;  в) 678,333.

Задание 8


   Составить таблицы сложения и умножения в двоичной системе счисления и выполнить вычисления:
   а) 1110 + 101;  б) 10101 - 11;  в) 101 • 11;  г) 1110 / 10.

Задание 9


   Представить числа в двоичном виде в восьмибитовой ячейке в формате
   а) 5;  б) 17;  в) 64;  г) 255.

Задание 10


   Представить числа в двоичном виде в восьмибитовой ячейке в формате целого со знаком.
   a) 56;  б) -56;  в) 127;  г) -127.

Задание 11 *


   Представить вещественные числа в четырёхбайтовой ячейке памяти в формате с плавающей точкой.
   a) 0,5;  б) 25,12;  в) -25,12;  г) -3456,1.





Наверх