Типы данных. Формы представления чисел. Булевы типы. Формат представления чисел с плавающей запятой

Помощь 15.07.2019
Помощь

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

  • Представление целых чисел в беззнаковых целых типах.

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

    Представление целых чисел в знаковых целых типах. Для представления со знаком самый старший (левый) бит отводится под знак числа, остальные разряды - под само число. Если число положительное, то в знаковый разряд помещается 0, если отрицательное - 1. Например, в байте можно представить знаковые числа от -128 до 127.

    Прямой код числа. Представление числа в привычной форме "знак"-"величина", при которой старший разряд ячейки отводится под знак, а остальные - под запись числа в двоичной системе, называется прямым кодом двоичного числа. Например, прямой код двоичных чисел 1001 и -1001 для 8-разрядной ячейки равен 00001001 и 10001001 соответственно. Положительные числа в ЭВМ всегда представляются с помощью прямого кода. Прямой код числа полностью совпадает с записью самого числа в ячейке машины. Прямой код отрицательного числа отличается от прямого кода соответствующего положительного числа лишь содержимым знакового разряда. Но отрицательные целые числа не представляются в ЭВМ с помощью прямого кода, для их представления используется так называемый дополнительный код . Дополнительный код положительного числа равен прямому коду этого числа. Дополнительный код отрицательного числа m равен 2 k -|m|, где k - количество разрядов в ячейке. Как уже было сказано, при представлении неотрицательных чисел в беззнаковом формате все разряды ячейки отводятся под само число. Например, запись числа 243=11110011 в одном байте при беззнаковом представлении будет выглядеть следующим образом:

При представлении целых чисел со знаком старший (левый) разряд отводится под знак числа, и под собственно число остаётся на один разряд меньше. Поэтому, если приведённое выше состояние ячейки рассматривать как запись целого числа со знаком, то для компьютера в этой ячейке записано число -13 (243+13=256=28). Но если это же отрицательное число записать в ячейку из 16-ти разрядов, то содержимое ячейки будет следующим:

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

    Алгоритм получения дополнительного кода отрицательного числа. Для получения дополнительного k-разрядного кода отрицательного числа необходимо

    модуль отрицательного числа представить прямым кодом в k двоичных разрядах;

    значение всех бит инвертировать:все нули заменить на единицы, а единицы на нули(таким образом, получается k-разрядный обратный код исходного числа);

    к полученному обратному коду прибавить единицу. Пример: Получим 8-разрядный дополнительный код числа -52:

    00110100 - число |-52|=52 в прямом коде

    11001011 - число -52 в обратном коде

    11001100 - число -52 в дополнительном коде Можно заметить, что представление целого числа не очень удобно изображать в двоичной системе, поэтому часто используют шестнадцатеричное представление:

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

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

  • Представление чисел с плавающей запятой. При представлении чисел с плавающей запятой часть разрядов ячейки отводится для записи порядка числа, остальные разряды - для записи мантиссы. По одному разряду в каждой группе отводится для изображения знака порядка и знака мантиссы. Для того, чтобы не хранить знак порядка, был придуман так называемый смещённый порядок , который рассчитывается по формуле 2 a-1 +ИП, где a - количество разрядов, отводимых под порядок. Пример : Если истинный порядок равен -5, тогда смещённый порядок для 4-байтового числа будет равен 127-5=122.

    Алгоритм представления числа с плавающей запятой.

    Перевести число из p-ичной системы счисления в двоичную;

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

    разместить знак, порядок и мантиссу в соответствующие разряды сетки.

    Пример: Представить число -25,625 в машинном виде с использованием 4 байтового представления (где 1 бит отводится под знак числа, 8 бит - под смещённый порядок, остальные биты - под мантиссу).

    25 10 =100011 2 0,625 10 =0,101 2 -25,625 10 = -100011,101 2 2. -100011,101 2 = -1,00011101 2 * 2 4 3. СП=127+4=131 4.

  • Можно заметить, что представление действительного числа не очень удобно изображать в двоичной системе, поэтому часто используют шестнадцатеричное представление:

  • Окончательный ответ: C1CD0000.

  • Записать внутреннее представление числа 250,1875 в форме с плавающей точкой.

  • 1) Приведем его в двоичную систему счисления с 24 значащими цифрами: 250,1875 10 =1111 1010 , 0011 0000 0000 0000 2 . 2) Запишем в форме нормлизованного двоичного числа с плавающей точкой: 0,1111 1010 0011 0000 0000 0000*10 2 1000 . Здесь мантисса, основание системы счисления (2 10 =10 2) и порядок (8 10 =1000 2) записаны в двоичной системе. 3) Вычислим машинный порядок в двоичной системе счисления: Mp 2 = 1000 + 100 0000 =100 1000. 4) Запишем представление числа в 4-х байтовой ячейке памяти с учетом знака числа:

  • Шестнадцатеричная форма: 48FA3000.

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

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

    Связь между машинным порядком (Мр) и математическим (р) в рассматриваемом случае выражается формулой: Мр = р + 64

    Полученная формула записана в десятичной системе. В двоичной системе формула имеет вид: Mp 2 =p 2 +1000000 2 Для записи внутреннего представления вещественного числа в 4-х байтовой ячейке необходимо: 1) перевести модуль данного числа в двоичную систему счисления с 24 значащими цифрами; 2) нормализовать двоичное число; 3) найти машинный порядок в двоичной системе счисления; 4) учитывая знак числа, выписать его представление в 4-х байтовом машинном слове.

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

Система счисления

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

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

Итак, для того чтобы перевести число в двоичную систему счисления, нужно взять выбранное нами значение и поделить его на 2. После этого мы получим результат и остаток (0 или 1). Результат опять делим 2 и запоминаем остаток. Данную процедуру нужно повторять до тех пор, пока в итоге также не окажется 0 или 1. Затем записываем конечное значение и остатки в обратном порядке, как мы их получали.

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

Память

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

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

Целые

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

Начнем мы с самого простого варианта, коим является представление целых чисел в компьютере. Память ПК отводит под этот процесс до смешного малое количество ячеек - всего одну. Таким образом, максимум в одном слоте могут быть значения от 0 до 11111111. Давайте переведём максимальное число в привычную нам форму записи.
Х = 1 × 2 7 + 1 × 2 6 + 1 × 2 5 + 1 × 2 4 + 1 × 2 3 + 1 × 2 2 + 1 × 2 1 + 1 × 2 0 = 1 × 2 8 - 1 = 255.

Теперь мы видим, что в одной ячейке памяти может располагаться значение от 0 до 255. Однако это относится исключительно к целым неотрицательным числам. Если же компьютеру понадобится записать отрицательное значение, всё пройдет немного по-другому.

Отрицательные числа

Теперь давайте посмотрим, как происходит представление чисел в компьютере, если они являются отрицательными. Для размещения значения, которое меньше нуля, отводится две ячейки памяти, или 16 бит информации. При этом 15 уходят под само число, а первый (крайний левый) бит отдается под соответствующий знак.

Если цифра отрицательная, то записывается "1", если положительная, то "0". Для простоты запоминания можно провести такую аналогию: если знак есть, то ставим 1, если его нет, то ничего (0).

Оставшиеся 15 бит информации отводятся под число. Аналогично предыдущему случаю, в них можно поместить максимум пятнадцать единиц. Стоит отметить, что запись отрицательных и положительных чисел существенно отличается друг от друга.

Для того чтобы разместить в 2 ячейках памяти значение больше нуля или равное ему, используется так называемый прямой код. Данная операция производится так же, как и было описано, а максимальное А = 32766, если использовать Сразу хочется отметить, что в данном случае "0" относится к положительным.

Примеры

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

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

  1. Сначала записывается модуль отрицательного числа в двоичном счислении. То есть компьютер запоминает аналогичное, но положительное значение.
  2. Затем проводится инвертирование каждого бита памяти. Для этого все единицы заменяются нулями и наоборот.
  3. Прибавляем "1" к полученному результату. Это и будет дополнительный код.

Приведем наглядный пример. Пусть у нас есть число Х = - 131. Сначала получаем его модуль |Х|= 131. Затем переводим в двоичную систему и записываем в 16 ячеек. Получим Х = 0000000010000011. После инвертирования Х=1111111101111100. Добавляем к нему "1" и получаем обратный код Х=1111111101111101. Для записи в 16-битную ячейку памяти минимальным числом является Х = - (2 15) = - 32767.

Длинные целые

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

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

Х мах =2 147 483 647.

Х min =- 2 147 483 648.

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

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

Плавающая запятая

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

Любое число может быть представлено в следующей форме Х = m * р п. Где m - это мантисса числа, р - основание системы счисления и п - порядок числа.

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

Пусть нам дано число 666,66. Приведём его к экспоненциальной форме. Получится Х = 0,66666 * 10 3 . Р = 10 и п = 3.

На хранение значений с плавающей запятой обычно выделяется 4 или 8 байт (32 или 64 бита). В первом случае это называется числом обычной точности, а во втором - двойной точности.

Из 4 байт, выделенных под хранение цифр, 1 (8 разрядов) отдается под данные о порядке и его знаке, а 3 байта (24 разряда) уходят на хранение мантиссы и её знака по тем же принципам, что и для целочисленных значений. Зная это, мы можем провести нехитрые расчеты.

Максимальное значение п = 1111111 2 = 127 10 . Исходя из него, мы можем получить максимальный размер числа, которое может храниться в памяти компьютера. Х=2 127 . Теперь мы можем вычислить максимально возможную мантиссу. Она будет равна 2 23 - 1 ≥ 2 23 = 2 (10 × 2,3) ≥ 1000 2,3 = 10 (3 × 2,3) ≥ 10 7 . В итоге, мы получили приближенное значение.

Если теперь мы объединим оба расчета, то получим значение, которое может быть записано без потерь в 4 байта памяти. Оно будет равно Х = 1,701411 * 10 38 . Остальные цифры были отброшены, поскольку именно такую точность позволяет иметь данный способ записи.

Двойная точность

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

П = 1111111111 2 = 1023 10 .

М = 2 52 -1 = 2 (10*5.2) = 1000 5.2 = 10 15.6 . Округляем в большую сторону и получаем максимальное число Х = 2 1023 с точностью до "м".

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

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

Целые числа являются простейшими числовыми данными, с которыми оперирует ЭВМ. Целые числа в компьютере хранятся в формате с фиксированной запятой . В этом случае каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а «запятая» находится справа после младшего разряда.

Для хранения целого неотрицательного числа отводится одна ячейка памяти 1 байт (8 бит), т.е диапазон чисел, которые могут храниться в оперативной памяти в формате целых неотрицательных чисел, от 0 до 255 (всего 256). Минимальное число 0 соответствует восьми нулям, а максимальное 255 соответствует восьми единицам (255 10 = 11111111 2).

Для представления целого числа со знаком самый старший (левый) бит отводится под знак числа, остальные разряды - под само число. Если число положительное, то в знаковый разряд помещается 0, если отрицательное - 1. Например, в байте можно представить знаковые числа от -128 до 127.

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

Представление числа в привычной форме "знак"-"величина", при которой старший разряд ячейки отводится под знак, а остальные - под запись числа в двоичной системе, называется прямым кодом двоичного числа.

Например, прямой код двоичных чисел 1001 и -1001 для 8-разрядной ячейки равен 0 0001001 и 1 0001001 соответственно.

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

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

Дополнительный код положительного числа равен прямому коду этого числа.

Дополнительный код отрицательного числа m равен 2 n -|m|, где n - количество разрядов в ячейке.

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

Алгоритм получения дополнительного кода отрицательного числа.

Для получения дополнительного k-разрядного кода отрицательного числа необходимо:

    модуль отрицательного числа представить прямым кодом в k- двоичных разрядах;

    значение всех бит инвертировать: все нули заменить на единицы, а единицы на нули, таким образом, получается k-разрядный обратный код исходного числа);

    к полученному обратному коду прибавить единицу.

Пример:

Получим 8-разрядный дополнительный код числа -52:
00110100 - число |-52|=52 в прямом коде
11001011 - число -52 в обратном коде
11001100 - число -52 в дополнительном коде

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

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

Этот способ представления опирается на нормализованную (экспоненциальную) запись действительных чисел.
Нормализованная запись отличного от нуля действительного числа A - это запись вида:
А= m* q n ,
где
m - мантисса числа (правильная дробь, у которой первая цифра после запятой не равна нулю),
q - основание системы,
n - порядок числа.

Примеры:
1. 3,1415926 = 0, 31415926 * 101;
2. 1000=0,1 * 104;
3. 0,123456789 = 0,123456789 * 100;
4. 0,00001078 = 0,1078 * 8-4; (порядок записан в 10-й системе)
5. 1000,00012 = 0, 100000012 * 24.

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

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

Целые числа без знака. Целые числа без знака обычно зани­мают в памяти компьютера 1 или 2 байт и принимают в одно­байтовом формате значения от 00000000 2 до 11111111 2 , ав дву­байтовом формате - от 00000000 00000000 2 до 11111111 11111111 2 (табл. 2.2).

Целые числа со знаком. Целые числа со знаком обычно занима­ют в памяти компьютера 1, 2 или 4 байт, при этом самый левый (старший) разряд содержит информацию о знаке числа. Знак « + » кодируется нулем, а «-» - единицей (табл. 2.3).

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

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

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

Таблица 2.2 Диапазоны значений целых чисел без знака

Число 1 ,о = 1 2: Число 127 10 = 1111111 2:

0000000 10 1111111

Знак числа «-»| Знак числа «-»

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

Прямой код числа -1: Прямой код числа -127:

1ОООООоТ11111111

Знак числа «+»Знак числа «+»

Прямой код: в знаковый разряд помещается цифра 1, а в разряды цифровой части числа - двоичный код его абсолютной величины.

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

Примеры.

Число:-1. Число:-127.

Код модуля числа: 00000001 Код модуля числа: 01111111

Обратный код числа: 11111110 Обратный код числа: 10000000

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

Дополнительный код числа -1: Дополнительный код числа -127:

Р

11111110 10000000

11111111 10 0 0 0 0 0 1

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

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

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

Формат чисел с плавающей запятой базируется на экспонен­циальной форме записи, в которой может быть представлено лю­бое число. Так, число А может быть представлено в виде

А = т- q",

где т - мантисса числа; q - основание системы счисления; п - порядок числа.

Для однозначности представления чисел с плавающей запятой используется нормализованная форма, при которой мантисса от­вечает условию

1/я = \т\ < 1.

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

Примеры. Преобразуем числа в экспоненциальную форму с нормализованной мантиссой:

421,637 = 0,421637 10 3 ;

0,000286 = 0,286 10" 4 ;

25,25 = -2,525 10 2 .

Число в форме с плавающей запятой занимает в памяти ком­пьютера 4 (число обычной точности) или 8 (число двойной точ­ности) байт. При записи числа с плавающей запятой выделяют разряды для хранения знака мантиссы, знака порядка, порядка и

мантиссы.

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

После выполнения операции выравнивания одинаковые раз­ряды чисел оказываются расположенными в одних и тех же раз­рядах ячеек памяти. Теперь операции сложения и вычитания чи­сел сводятся к сложению или вычитанию мантисс.

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

Пример. Произвести сложение чисел 0,1 *2 3 и 0,1 2 5 в формате с плавающей запятой.

Произведем выравнивание порядков и сложение мантисс:

+ 0,100 -2 5

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

Пример. Произвести умножение чисел 0,1 2 3 и 0,1 2 5 в форма­те с плавающей запятой.

После умножения будет получено число 0,01 2 8 , которое пос­ле нормализации примет вид 0,1 2 7 .

2.1.7. Представление других видов информации в компьютере Все виды информации (текстовая, графическая, звуковая, ви­део-) кодируются в последовательности нулей и единиц. Рассмот­рим этот процесс более подробно.

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

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

Кодирование заключается в том, что каждому символу ставит­ся в соответствие уникальный десятичный код от 0 до 255 или соответствующий ему двоичный код от 00000000 до 11111111.

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

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

Присвоение символу конкретного кода - это вопрос соглаше­ния, которое фиксируется в кодовой таблице. Первые 33 кода (с О по 32) соответствуют не символам, а операциям (перевод стро­ки, ввод пробела и т.д.).

В качестве международного стандарта принята кодовая таблица ASCII (American Standard Code for Information Interchange) (рис. 2.1, а), кодирующая первую половину символов с числовыми кодами от 32 до 126.

Хронологически одним из первых стандартов кодирования рус­ских букв на компьютерах был КОИ8 («Код обмена информаци­ей, 8-битный»). Эта кодировка с середины 1980-х гг. стала исполь­зоваться в первых русифицированных версиях операционной си­стемы UNIX.

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

Рис. 2.1. Примеры кодировочных таблиц:

а - международная кодировка ASCII; б - кодировка СР1251

Наиболее распространенной в настоящее время является ко­дировка Microsoft Windows, обозначаемая СР1251 (от англ. Code page - кодовая страница) (рис. 2.1, б).

В конце 1990-х гг. появился новый международный стандарт Unicode, который отводит под один символ не 1 байт, а 2 байт, поэтому с его помощью можно закодировать не 256, а 65 536 раз­личных символов. Полная спецификация стандарта Unicode вклю­чает в себя все существующие, вымершие и искусственно создан­ные алфавиты мира, а также множество математических, музы­кальных, химических и прочих символов.

Двоичное кодирование графической информации. Графические изображения, хранящиеся в аналоговой (непрерывной) форме на бумаге, фото- и кинопленке, могут быть преобразованы в цифро­вой компьютерный формат путем пространственной дискретиза­ции. Это реализуется путем сканирования, результатом которого является растровое изображение. Растровое изображение состоит из отдельных точек - пикселов (от англ. picture element - элемент изображения), каждая из которых может иметь свой цвет.

Качество изображения определяется разрешающей способно­стью монитора, т. е. числом точек, из которых оно складывается. Чем больше разрешающая способность монитора, т. е. чем больше число строк растра и точек в строке, тем выше качество изобра­жения. В современных персональных компьютерах обычно исполь­зуются четыре основные разрешающие способности экрана: 640 х 480, 800 х 600, 1024 х 768 и 1280 х 1024 точки.

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

Цветное изображение на экране монитора формируется за счет смешивания трех базовых цветов: красного, зеленого и синего. Такая цветовая модель называется RGB-моделью (от англ. Red, Green, Blue - красный, зеленый, синий). Для получения богатой палит-

Таблица 2.4 Глубина цвета и число отображаемых цветов

Таблица 2.5 Формирование цветов при глубине цвета 24 бит

ры цветов базовым цветам могут быть заданы различные интен­сивности, Например, при глубине цвета в 24 бит на каждый из цветов выделяется по 8 бит, т. е. для каждого из цветов возможны 2 8 = 256 уровней интенсивности, заданных двоичными кодами (от минимальной - 00000000 до максимальной - 11111111) (табл. 2.5).

Для того чтобы на экране монитора формировалось изображе­ние, информация о каждой его точке (код цвета, точки) должна храниться в видеопамяти компьютера. Рассчитаем необходимый объем видеопамяти для одного из графических режимов, напри­мер с разрешением 800 х 600 точек и глубиной цве­та 24 бит на точку. Всего точек на экране: 800 600 = 480 000. Не­обходимый объем видеопамяти: 24 бит 480 000 = 11 520 000 бит = = 1 440 000 байт = 1406,25 Кбайт = 1,37 Мбайт.

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

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

Таким образом, непрерывная зависимость амплитуды сигнала от времени A(t) заменяется на диск­ретную последовательность уровней громкости.

Рис. 2.2. Сетка уровней квантования.

Дискретизация - процесс разбивания сигнала на отдельные составпяющие, взятые в. определенные тактовые моменты времени t 0 , I t 2 ,… Р ез четко определенные тактовые интервалы времени / (рис 2.2).

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

д/ 0) = 2; Л(/,) = 5; A(t 2) = 6; A(t 3) = 6; A(U) = 5; A(t 5) = 5; A(t 6) = 6;

A(t 7) = 6; A(h) = 5.

Кодирование - перевод значения уровня квантования в конк­ретный двоичный код, например:

2-0010; 6-0110; 6-0110; 5-0101; 5-0101; 6-ОНО; 6-0110; 5-0101; 4-0100.

Качество передаваемой информации при этом будет зависеть:

От разрядности преобразования, т. е. числа двоичных разря­дов, которые будут использованы при кодировании соответству­ющего уровня;

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

Уровни громкости звука можно рассматривать как набор воз­можных состояний. Следовательно, чем большее число уровней громкости будет выделено в процессе кодирования, тем большее количество информации будет нести значение каждого уровня и тем более качественным будет звучание. Звуковые карты обеспе­чивают, например, 16-битную глубину кодирования звука, обес­печивая 2 16 = 65 536 уровней сигнала.

Кроме того, качество кодирования зависит и от числа точек измерения уровня сигнала за 1 с, т. е. частоты дискретизации (это значение изменяется от 8000 до 48 000).

Принято измерять частоту дискретизации в кГц (килогерцах): 1 кГц - это 1000 измерений в секунду.

Можно оценить информационный объем стереоаудиофайла Длительностью звучания 1 с при высоком качестве звука (16 бит, 48 кГц). Для этого число бит на одну выборку необходимо умно­жить на число выборок в 1 с и умножить на 2 (стереорежим):

16 бит 48 000 -2=1 536 000 бит = 192 000 байт 187,5 Кбайт.

Информационный объем звукового файла длительностью 1 мин Приблизительно равен 11 Мбайт.

Контрольные вопросы

1.Чем отличаются позиционные системы счисления от непозицион­ных?

2.Какое количество информации несет в себе цифра восьмеричного числа?

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

4.В чем заключается преимущество экспоненциальной формы числа?

5.Как кодируются символы текста?

6.В чем заключается метод пространственной дискретизации?

7.Переведите в десятичную систему счисления 1110 2 ; 22 8 ; BF l 6 ; 10110 2 ;

135 8 ; 70£ 16 .

8.Переведите десятичные числа в двоичную, восьмеричную и шест-надцатеричную системы счисления: 74,21; 26,11; 125,01; 114,08.

9.Переведите пары чисел в двоичную систему счисления, произведи­те арифметические операции, ответы проверьте: 36 и 4; 75 и 5; 12 и 4; 123 и 3.

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

20 + 25= 100; 22+ 44 =110?

11.Десятичное число 59 эквивалентно числу 214 в некоторой другой системе счисления. Найдите основание этой системы.

12.Переведите числа в десятичную систему, а затем проверьте ре­зультаты, выполнив обратные переводы:

14. Перемножьте числа, а затем проверьте результаты, выполнив со­
ответствующие десятичные умножения:

101101 2 101 2 111101 2 - П,012

1011,11 2 101,1 2 101 2 -1111,001 2

15.Разделите 10010110 2 на 1010 2 и проверьте результат, умножив де­литель на частное.

16.Запишите числа в прямом коде (формат 1 байт):

17. Запишите числа в обратном и дополнительном кодах (формат 1 байт):

18 Найдите десятичные представления чисел, записанных в допол­
нительном коде:

11111000 10011011

11101001 10000000

19. Выполните вычитания чисел путем сложения их обратных (допол­
нительных) кодов в формате 1 байт (укажите, в каких случаях имеет
место переполнение разрядной сетки):

20.Закодируйте с помощью таблицы СР1251 и представьте в шест-надцатеричной системе счисления слово «информация».

21.Почему иногда на экране монитора вместо текстовой информации можно видеть 00DD и т.п.?

22.На клавиатуре наряду с алфавитно-цифровыми клавишами разме­щены такие, как , , и т.д. Имеют ли они десятичный код?

23.При разрешающей способности 1280 х 1024 точек определите объем видеопамяти при глубине цвета High Color.

24.Сколько может «весить», т.е. какой имеет объем, файл с видео­клипом длительностью 5 с?

25.Сколько точек содержит рисунок, если при кодировании каждой точки 1 байт получился файл объемом 300 Кбайт?

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

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

А = 1 × 2 7 + 1 × 2 6 + 1 × 2 5 + 1 × 2 4 + 1 × 2 3 + 1 × 2 2 + 1 × 2 1 + 1 × 2 0 = 1 × 2 8 - 1 = 255 10 .

Диапазон изменения целых неотрицательных чисел чисел: от 0 до 255.

Для хранения целых чисел со знаком отводится две ячейки памяти (16 битов), причем старший (левый) разряд отводится под знак числа (если число положительное, то в знаковый разряд записывается 0, если число отрицательное - 1).

Представление в компьютере положительных чисел с использованием формата "знак-величина" называется прямым кодом числа. Например, число 2002 10 = 11111010010 2 будет представлено в 16-разрядном представлении следующим образом:

0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0

Максимальное положительное число (с учетом выделения одного разряда на знак) для целых чисел со знаком в n-разрядном представлении равно:

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

Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен 2 n - |A|.

Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, так как в n-разрядной компьютерной арифметике:

2 n - |А| + |А| = 0,

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

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

1. Модуль числа записать в прямом коде в n двоичных разрядах.

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

3. К полученному обратному коду прибавить единицу.

Запишем дополнительный код отрицательного числа -2002 для 16-разрядного компьютерного представления:


При n-разрядном представлении отрицательного числа А в дополнительным коде старший разряд выделяется для хранения знака числа (единицы). В остальных разрядах записывается положительное число

Чтобы число было положительным, должно выполняться условие

|А| £ 2 n-1 .

Следовательно, максимальное значение модуля числа А в га-разрядном представлении равно:

Тогда минимальное отрицательное число равно:

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

Максимальное положительное целое число (с учетом выделения одного разряда на знак) равно:

А = 2 31 - 1 = 2 147 483 647 10 .

Минимальное отрицательное целое число равно:

А = -2 31 = - 2 147 483 648 10 .

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

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

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

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

A = m × q n 2.3

где m - мантисса числа;
q - основание системы счисления;
n - порядок числа.

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

1/n £ |m|

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

Преобразуем десятичное число 555,55, записанное в естественной форме, в экспоненциальную форму с нормализованной мантиссой:

555,55 = 0,55555 × 10 3 .

Здесь нормализованная мантисса: m = 0,55555, порядок: n = 3.

Число в формате с плавающей запятой занимает в памяти компьютера 4 (число обычной точности ) или 8 байтов (число двойной точности ). При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы.

Диапазон изменения чисел определяется количеством разрядов, отведенных для хранения порядка числа, а точность (количество значащих цифр) определяется количеством разрядов, отведенных для хранения мантиссы.

Определим максимальное число и его точность для формата чисел обычной точности , если для хранения порядка и его знака отводится 8 разрядов, а для хранения мантиссы и ее знака - 24 разряда:

0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
знак и порядок знак и мантисса

Максимальное значение порядка числа составит 1111111 2 = 127 10 , и, следовательно, максимальное значение числа составит:

2 127 = 1,7014118346046923173168730371588 × 10 38 .

Максимальное значение положительной мантиссы равно:

2 23 - 1 » 2 23 = 2 (10 × 2,3) » 1000 2,3 = 10 (3 × 2,3) » 10 7 .

Таким образом максимальное значение чисел обычной точности с учетом возможной точности вычислений составит 1,701411 × 10 38 (количество значащих цифр десятичного числа в данном случае ограничено 7 разрядами).

Задания

1.26. Заполнить таблицу, записав отрицательные десятичные числа в прямом, обратном и дополнительном кодах в 16-разрядном представлении:

1.27. Определить диапазон представления целых чисел со знаком (отводится 2 байта памяти) в формате с фиксированной запятой.

1.28. Определить максимальное число и его точность для формата чисел двойной точности , если для хранения порядка и его знака отводится 11 разрядов, а для хранения мантиссы и ее знака - 53 разряда.



Рекомендуем почитать

Наверх