Странные единицы измерений. Единицы измерения объема информации Пол байта

Алиса. Меня зовут Алиса…
Шалтай-Болтай. Какое глупое имя! Что оно значит?
Алиса. Разве имя должно что-то значить?
Шалтай-Болтай. Конечно, должно! Возьмем, к примеру, мое имя - оно выражает мою суть! Замечательную чудесную суть! А с таким именем, как у тебя, ты можешь оказаться чем угодно… Ну просто чем угодно!

Л. Кэрролл. Алиса в Зазеркалье

Сегодняшний параграф посвящен теме, с которой начинается любой компьютерный учебник. Начинается он с объяснения минимальной терминологии - вот есть бит, а когда битов становится восемь, то это уже байт. А когда байтов накопится 1024, получим килобайт. Каждый эту смертную скуку по разу прочел, кто-то запомнил, кто-то - нет; прочитал учебник, закрыл - и все.

Давным-давно, в стародавние времена жили-были компьютеры. И все в них измерялось в байтах. Но они быстро выросли, и байтов стало много-много - целые тыщи. Тогда компьютерные первопроходцы придумали термин K для обозначения 1024 байт (2 10 байт), чтобы не путать с к - кило, то есть 1000.

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

Хозяйке на заметку

В метрической системе обычно берут за основу какой-нибудь греческий или латинский корень и приставляют его ко всему. Все эти приставки возводят десятку в какую-нибудь степень. Скажем, миллиметр - это 10 −3 метров (одна тысячная метра). А километр - это 10 3 метров (одна тысяча метров).

Все метрические обозначения нужно писать правильно, так как от этого зависит смысл: μ означает микро... , м означает милли... , м означает метр , а М - мега...

А компьютеры работали, работают и в ближайшее время будут работать в двоичной системе. Нам известно, что десятичная приставка к происходит от слова «кило» (тысяча), пишется маленькой и означает умножение на тысячу. Двоичное К имеет к «кило» исключительно мнемоническое отношение.

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

Бóльшая часть производителей жестких дисков указывает объем изделий в десятичных мегабайтах и гигабайтах. А операционные системы смотрят на диски с точки зрения двоичных мегабайтов и гигабайтов. При покупке жесткого диска на 50 ГБ надо быть готовым к тому, что «недо» составит 3,5 ГБ. Оставшиеся 46,5 ГБ - это и есть честный объем диска. Но в двоичных гигабайтах!

Лирическое отступление

В характеристиках жидкокристаллических мониторов стоит обратить внимание на надпись: «диагональ экрана - 15″ (эквивалент 17″ с электронно-лучевой трубкой)». Это означает лишь то, что производители обычных кинескопов меряют диагональ, включая нерабочие области. Все равно в мире не бывает таких потребителей, которые придут в магазин с дюймовой линейкой, чтобы замерить экран. Главное - победить в борьбе красивых цифр (см. также § 70).

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

Своей жизнью живет телекоммуникационная индустрия. Там изначально заведено все измерять в десятичных килобитах. Обычно скорость передачи данных меряется килобитами в секунду (кб/сек.). Модем на 28,8 кб/сек. при хорошей погоде передает в секунду ровно 28 800 бит, то есть примерно три с половиной двоичных килобайта. В модеме «на 28,8 К» обозначение «К» вместо «кб/сек.» является плодом фантазии маркетологов и профессионалами не используется.

Особый случай наблюдался у изобретателей 3,5-дюймовой дискеты (которая, на самом деле, 90-миллиметровая). На каждой коробке было указано «1,44 МБ». Все помнят это число. И все помнят, что влезало на дискету гораздо меньше обещанного. Почему? Потому что в данном случае речь идет об особых мегабайтах, в каждом из которых содержится 1 024 000 байт.

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

См.: IEC 60027–2 (2000–11) - Letter symbols to be used in electrical technology - Part 2: Telecommunications and electronics

Назва-ние Аббре-виатура Значе-ние Стандарт МЭК (неживой)
бит б 0 или 1
байт Б 8 бит
килобит кбит
кб
1000 бит
килобайт (двоичный) КБ 1024 байта кибибайт
килобайт (десятичный) кБ 1000 байт
мегабит Мб 1000 килобит
мегабайт (двоичный) МБ 1024 килобайта мебибайт
мегабайт (десятичный) МБ 1000 килобайт
гигабит Гб 1000 мегабит
гигабайт (двоичный) ГБ 1024 мегабайта гибибайт
гигабайт (десятичный) ГБ 1000 мегабайт

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

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

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

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

Килобайт (Кбайт, Кб) - 1024 байта;

Мегабайт (Мбайт, Мб) - 1024 килобайта;

Гигабайт (Гбайт, Гб) - 1024 мегабайта.

Почему в килобайте 1024 байта, а не ровно 1000, что казалось бы логичным, если следовать аналогиям с другими производными единицами? Это связано с компьютерным представлением информации. Килобайт- это два в десятой степени байта - то есть 1024 байта, а не 1000.

ГЛАВА 1 Краткий ликбез

По этому поводу даже бытует распространенный анекдот: пользователь считает, что в килобайте ровно 1000 байт, а программист уверен, что в километре ровно 1024 метра.

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

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

б\ква, цифра). Один килобайт - 1024 байта, то есть 1024 символа. Что такое 1024

символа? Примерно половина машинописной страницы текста (если говорить

очно, то машинописная страница - это 1,8 Кб). То есть мегабайт (1024 Кб) - это

примерно 500 машинописных страниц с текстом. Представьте себе пачку бумаги в

500 страниц, отпечатанных с одной стороны, - это и будет мегабайт.

500 машинописных страниц - это книжка средних размеров (страниц в 300). Таким образом, один мегабайт - это одна книжка (с точки зрения количества символов чистого текста).

Средняя емкость современных жестких дисков (к моменту выхода учебника она, разумеется, уже увеличится) - порядка 200 Гб (один гигабайт, напоминаю, - это 1024 Мб). То есть на один винчестер, если говорить очень и очень условно, поместится примерно двести тысяч книг среднего размера. Обсчитаться можно, не так ли?

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

Конспект главы «Краткий ликбез»

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

2. Фирма IBM первая провозгласила принцип «открытой архитектуры», в результате чего IBM-совместимые компьютеры стали выпускать все кому не лень, и разработки других фирм популярностью не пользовались (за исключением компьютеров фирмы Apple).

3. Современные бытовые компьютеры делятся натри основные категории: настольные компьютеры, переносные (ноутбуки, лаптопы) и наладонные, или карманные, компьютеры.

Единицы измерения информации

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

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

6. Одна машинописная страница текста - примерно 1800 байт, или 1,8 килобайт. Емкость современных жестких дисков давно уже перевалили за 500 Гб.

Ответы на часто задаваемые вопросы

Куда делись старые типы домашних компьютеров - все эти Commodore, Olivetti, Spectrum ?

Были выброшены на свалку истории. Персональные компьютеры их задавили. Домашние компьютеры оказались тупиковой ветвью цивилизации... Кстати, в свое время фирма Commodore выпускала персональный компьютер Commodore Amigo. И компьютер, что интересно, был вполне неплохой (например, по качеству графики он заметно превосходил IBM-совместимые машины). Но он не смог выдержать конкуренции с принципом «открытой архитектуры». А вот компьютер фирмы Apple смог. Однако рассказ о том, почему у Apple это получилось, выходит за рамки данного пособия.




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

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

Элементарная ячейка памяти ЭВМ имеет длину 8 бит (1 байт). Каждый байт имеет свой номер (его называют адресом ) . Длина машинного слова зависит от разрядности процессора и может быть равной 16, 32, 64 битам и т.д. Адрес машинного слова в памяти компьютера равен адресу младшего байта, входящего в это слово. Машинное слово, состоящее из 16 бит (2-х байт) представлено на рис.1. Разряды нумеруются справа налево, начиная с 0. Самый левый является старшим разрядом (на рисунке с номером 15), самый правый – младшим (на рисунке с номером 0).

Рис. 1. Бит, байт, слово

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

С фиксированной запятой (точкой);

С плавающей запятой (точкой).

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

1. Представление целых чисел в формате с фиксированной запятой

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

Так в n-разрядной ячейке может храниться 2 n различных значений целых чисел . Так в 8-разрядной ячейке может храниться 2 8 =256 различных значений, в 16-разрядной – 2 16 =65536 различных значений.

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

Целые числа без знака. Обычно занимают в памяти компьютера один или два байта. Максимальное значение целого числа без знака (положительного числа) достигается в случае, когда во всех ячейках хранятся единицы. Для n-разрядного представления оно будет равно .Для 8-разрядной ячейки максимальное значение целого положительного числа достигается в случае, когда во всех ячейках хранятся единицы и равно
. Минимальное число соответствует восьми нулям, хранящимся в восьми битах ячейки памяти, и равно нулю. Следовательно, в 8-разрядной ячейке диапазон изменения целых чисел без знака: от 0 до 255. В 16-разрядной ячейке - от 0 до 65535 (всего 65536 значений).

Так, число 11100001 2 будет храниться в 8-разрядной ячейке памяти следующим образом:

Итак, чтобы получить внутреннее представление целого числа без знака А, хранящегося в n-разрядном машинном слове, необходимо:

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

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

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

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

Диапазоны значений целых чисел со знаком:

 в 8-разрядной ячейке: от -128 до 127;

 в 16-разрядной ячейке: от -32 768 до 32 767;

 в 32-разрядной ячейке: от -2 147 483 648 до 2 147 483 647.

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

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

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

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

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

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

Например, внутреннее представление целого отрицательного числа -1607 в 16-разрядной ячейке запишется следующим образом: 1111 1001 1011 1001. Так как:

1) а) -1607=1607 10 =11001000111 2

б) прямой код в 16-разрядной ячейке:

0000 0110 0100 0111

2) обратный код:

1111 1001 1011 1000

3) дополнительный код (результат прибавления 1):

1111 1001 1011 1001 – это внутренне двоичное представление числа (-1607).

3.2. Представление вещественных чисел в формате с плавающей запятой

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

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

Например, число 139,76 можно записать в виде: 0,13976х10 3 . Здесь m=0,13976 – мантисса, p=3 – порядок. Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть», т.е. сместиться десятичная в мантиссе. Отсюда название «плавающая точка». Однако справедливы и следующие равенства:

139,76=13,976х10 1 = 1,3976х10 2 = 0,013976х10 4 = 13976 х10 -2

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

0.1 q m< 1 q ,

то есть мантисса меньше единицы и первая значащая цифра - не ноль. Следовательно, для рассмотренного числа нормализованным представлением будет: 0,13976х10 3 .

В разных типах ЭВМ применяются различные варианты представления чисел в форме с плавающей точкой. Для примера рассмотрим один из возможных.

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

 маш. порядок

1-й байт 2-й байт 3-й байт 4-й байт

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

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

Машинный

Математический

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

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

М q = q + 1000000 2

При выполнении вычислений с плавающей точкой процессор это смещение учитывает.

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

1) Перевести модуль данного числа в двоичную систему счисления;

2) Записать полученное двоичное число в нормализованном виде;

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

4) Учитывая знак заданного числа (0 – положительное; 1 – отрицательное), записать его представление в памяти ЭВМ.

Например, запишем внутреннее представление числа 139,76 в форме с плавающей точкой в 4-х байтовой ячейке:

1) Переведем десятичное 139,76 и запишем его 24-значащими цифрами:

139,76 10 = 10001011,1100001010001111 2

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

10001011,1100001010001111 2 = 0,100010111100001010001111 2 х10 1000 ,

где 0,100010111100001010001111 2 – мантисса;

10 – основание системы счисления (2 10 =10 2);

1000 – порядок (8 10 =1000 2).

3) Определим машинный порядок:

Mq 2 = 1000 + 1000000 = 1001000

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

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

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

    8 бит: 0…2 8 –1 = 0…255

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

    8 бит: –2 7 …–1 0…+2 7 –1 = –128…+127

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

    32 бита (8 бит порядок, 24 бита мантисса):

12 –(2^7–2) …22 +(2^7–1) = 2 –126 …2 +128 = 1,110 –38 …3,410 +38

    (11 бит порядок, 53 бита мантисса):

12 –(2^10–2) …22 +(2^10–1) = 2 –1022 …2 +1024 = 2,210 –308 …1,710 +38

    (15 бит порядок, 65 бита мантисса):

12 –(2^14–2) …22 +(2^14–1) = 2 –16.382 …2 +16.384 = 3,310 –4932 …1,110 +4932

    значения 1.000…2 111… – зарезервированы стандартомIEEE(ANSI) для обозначения.

    значения +1.000…2 000… – зарезервированы стандартомIEEE(ANSI) для обозначения 0.

    значения –1.000…2 000… – зарезервированы стандартомIEEE(ANSI) для обозначения –0.

    значения +1.xxx…2 111… – зарезервированы стандартомIEEE(ANSI) для обозначения NaN.

    Представить числа в формате целого числа с фиксированной запятой 8 бит:

    63: прямой код –

    –63: обратный код – , дополнительный код – .

    Записать числа по их внутреннему представлению в ЭВМ в десятичной системе счисления:

    Прямой код = +126

    Дополнительный код = = –64

    Сложить два числа в дополнительном восьмиразрядном двоичном коде:

30: прямой код – ,

–13: прямой код – , обратный код – , дополн. код – .

прямой код – = 17 10

    Представить числа +127,125 и –127,125 в формате вещественного числа с плавающей запятой 32 бита.

Структура представления чисел в ЭВМ:

    125,125: прямой код 111 1101,001 = 1,1111 0100 12 6 ,

смещенный порядок 6+(2 7 –1) = 6+127 = 133 = 1000 0101 2

    Записать число в десятичной системе счисления по его внутреннему представлению в ЭВМ:

    01000010011111111000000000000000

0 10000100 11111111000000000000000

Смещенный порядок – = , несмещенный порядок – = [+5].

Число – [+1,1111 11112 +5 ]=[+111111,111 2 ]=.