Типы данных

В компьютере все данные представлены в виде двоичных последовательностей. Точно также передается информация через интернет. Например,  отдал котят через объявления на Ukrboard. Доски объявлений в этом плане помогают и  котятам найти хозяев и самим хозяевам выбрать нужную породу. Это сделано из-за легкости их сохранения в памяти. Вся память представлена ​​в виде конденсаторов: если он не заряжен это равносильно 0, а если заряжен — 1. Знать двоичную систему счисления обязательно для профессионального программирования. Меньше объем информации — бит, но для облегчения в языках программирования считают наименьшим значением — байт. Байт — это 8 бит.

А теперь о типах в C + +. Их разделяют на категории:

1. Целые

Целые числа, которые не имеют дробной части. Они все имеют одинаковые действия. Отличный в них только размер, т.е. количество байтов, занимаемых в памяти. Наименьший тип short имеет размер 2 байт. Далее int — 4 байта и long — 8 байт. По правилам комбинаторики можно посчитать их наибольшее и наименьшее значение. У нас двоичная система счисления, следовательно формула будет такова: 2 ^ n, где n — кол-во бит. Первый (старший бит) является знаком числа: 0 — положительное, 1 — отрицательное, число 0 считается положительным.

Следовательно, для short имеем 2 ^ 15 = 32768 и поскольку мы считаем от 0, то максимальное значение будет 32767, а минимальное -32768. Не трудно посчитать и для всех других типов. Это будет домашнее задание! Часто возникают ситуации, когда нам не нужны отрицательные числа и для того чтобы экономить память придумали приставку для целых типов unsigned, что в переводе означает беззнаковый.

То есть для unsigned short максимальное значение будет 2 ^ 16 = 65536-1 = 65535 (один вычитаем т.к. считаем с 0). Для всех типов с unsigned минимальное значение — 0. Также можно еще писать signed, но это не обязательно потому что задается автоматически (оно означает знаковый). Во вторых языках программирования все целые типы являются знаковыми и unsigned не допускается.

2. Действительные

К настоящим принадлежат float и double. Double в 2 раза больше. В памяти представляется мантиссой и порядком, старший бит также является знаковым. Для них нет unsigned. Float положение [3.4 * 10 ^ -38 .. 3.4 * 10 ^ 38], double [1.7 * 10 ^ -308 .. 1.7 * 10 ^ 308]. В памяти float — 4 байта, double — 8 байт. Есть еще long double: занимает 10 байт и имеет значение [3.4 * 10 ^ -4932 .. 3.4 * 10 ^ 4932].

3. Символьные

К символьным относятся:

char — тип что 256 значений символов занимает 1 байт в памяти, принимает значение символов таблицы ASCII первые 128 символов во всех системах одинаковые а другие 128 зависят от локализации системы.

wchar_t — занимает 2 байта, следовательно может принимать 65536 значений. Принимает символы в кодировку unicode. В unicode первые 256 значений совпадают с таблицей ASCII.

4. Логический тип bool

Этот тип принимает 2 значения true и false (истина и ложь). Несмотря на количество возможных значений занимает 1 байт в памяти, так как минимальная единица байт, хотя достаточно одного бита. Для экономии памяти используют битовые шкалы, но об этом позже. У некоторых может возникнуть вопрос для чего экономить память если ее так достаточно. Да, но при передаче через Интернет, особенно когда он очень медленный, это играет важную роль, но также незначительно, потому что интернет развивается и сейчас трудно найти медленное соединение.

Будто о типах все. Помните выбор типа очень важен. Например, в олимпиадах по программированию часто задают максимальное значение и поэтому нужно помнить максимальное и минимальное значение каждого типа.

 

Теперь можно сказать о переменных. Переменная — это ячейка в памяти и сколько она в ней занимает зависит от типа, можно считать, что тип это правило выбора данных из памяти. Можно объявить переменную и указать значение не числом а адресом в памяти и по правилам типа оно выберет необходимые данные для переменной. Но это не рекомендуется делать, так как в некоторых операционных системах очень жесткий контроль памяти и если программа полезет не в свое память то ОС может без предупреждения завершить ее. В windows этого нет и поэтому под него являются вирусы. В linux есть жесткий контроль и поэтому нет вирусов. Кстати программы для набора ресурсов в играх, такие как ArtMoney, работают по такому принципу, что залезают в память другого приложения и меняют в ней данные.

 

На этом урок закончен. Прошу писать отзывы в комментариях об этой статье.