Глоссарий кодера, или С Самого Начала
группа товарищей
СТРУКТУРА ДАННЫХ - это все вместе. Вот твои планы на вечер (ночь,
утро...) - это и есть структура данных, просек? И эта структура
состоит из данных разных типов. Этих самых типов, как ты уже понял,
вагон и маленькая тележка. Комп в одном массиве переменные разных
типов хранить не дает. Да и выяснить, что больше, строка "ВАСЯ
ПУПКИН" или число 132, не может тоже (я тоже не могу :) ). Резонный
вопрос - почему? Все просто. Помнишь про две ноги в одной штанине?
Так вот, каждый тип данных занимает разное количество места в
ПАМЯТИ. Ну, ты когда из дома выходил, ты ж знал, куда идешь и
зачем? Во-во, ты помнил это дело, то есть держал в ОПЕРАТИВНОЙ
ПАМЯТИ (RAM). Оперативная она потому, что ты с ней сейчас работаешь.
А завтра все забудешь на фиг. А вот записняк твой с телефонами
- это уже ПОСТОЯНННАЯ ПАМЯТЬ (ROM). Пока ты его не посеял, он
всегда с тобой.
РАЗМЕРЫ
Так вот о размерах. Например, бит - он и занимает бит памяти.
А вот число 200 в бит уже не запихнешь. Приходится выделять памяти
побольше. Помнишь, мы договорились делить информацию на байты
(8 бит)? Прикинем... 11111111b - это в десятичной системе счисления
255. Больше, чем число 200, которое нам надо запомнить. Значит,
влезет! Смело выделяем под это число 1 байт и радуемся жизни.
А если нам надо записать 300? В байт уже не лезет... Надо выделять
побольше. Два байта. В два байта у нас поместится аж 1111111111111111b
- 65535!!! Круто, да? Такое число, состоящее из 2 байт, принято
называть СЛОВОМ (WORD). А ведь бывают числа и побольше... Тут
все снова просто - увеличиваем размер числа в байтах в 2 раза,
получаем 4 байта, или ДВОЙНОЕ СЛОВО (DOUBLE WORD). И уж сюда можно
затолкать!!! Не, не то, что ты подумал. Просто число - правда,
аж до 4294967295.
+-
Теперь такая подлянка - а если число отрицательное? Чего делать?
Метод номер раз: берем один бит числа (первый слева) и договариваемся,
что если он равен 1, то это число - положительное, больше 0, а
если этот бит равен 0, то число отрицательное. На этом мы, конечно,
теряем 1 бит в СТАРШЕМ РАЗРЯДЕ (HIGH), но получаем знак, то есть
наше число становится ЗНАКОВЫМ. Метод номер два: берем и договариваемся,
что, например, первый байт слова содержит положительные числа
при том условии, если другой байт равен 0, а второй байт - отрицательное.
Сложно? Правильно, сложно. Поэтому второй метод почти нигде не
применяется. Чем дальше в лес, тем толще партизаны. А если число
не целое? Сам подумай, как компу, который только и знает, что
0 и 1, втолковать, что вот это - не целое число, а офигительная
дробь? И тут пытливые умы нашли метод. Они поделили это самое
число на две части. Одна - до запятой, вторая - после. Первое
число обозвали ЦЕЛОЙ ЧАСТЬЮ, а второе - МАНТИССОЙ (имечко будь
здоров...). И стали его хранить в таком виде в памяти. А чтобы
мало не казалось (мало ли, может ты полет на Марс считать собрался),
дробные числа разделили на 2 типа:
ОДИНАРНОЙ (SINGLE) и ДВОЙНОЙ (DOUBLE) ТОЧНОСТИ. Они занимают
4 байта и 8 байт соответственно. Двойная точность - это когда
на Марс собираешься. Там на ноль целых ни фига десятых ошибся
и вместо Марса прилетел на Юпитер, и хорошо, если вообще прилетел.