Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
theory:data [2020/08/14 11:20] alexniktheory:data [2020/08/14 12:07] (текущий) alexnik
Строка 32: Строка 32:
 ===== Типы данных ===== ===== Типы данных =====
 Тип определяет возможные значения и их смысл, операции, а также способы хранения значений типа.\\ Тип определяет возможные значения и их смысл, операции, а также способы хранения значений типа.\\
 +
 ==== boolean ==== ==== boolean ====
 +Может принимать одно из двух значений true или false. boolean занимает в памяти один байт.\\
 +
 +==== char ====
 +Переменная типа char занимает 1 байт памяти и может хранить один алфавитно-цифровой символ (литеру). При объявление литеры используются одиночные кавычки: 'A' (двойные кавычки используется при объявлении строки символов - тип string: "ABC").\\
 +
 +Символ хранится в памяти как число, соответствующее коду символа в таблице кодировки символов ASCII. Т.к. символ хранится как число в памяти над ним возможно производить арифметические действия (например, 'A' + 1 будет 66, т.к. ASCII код для 'A' - 65).\\
 +
 +Тип char знаковый тип, т.е. число (код) хранящийся в памяти может принимать значения от -128 до 127. Если необходима беззнаковая однобайтовая переменная, используйте тип byte.\\
 +
 +==== byte ====
 +Тип данных byte 8-ми битное беззнаковое целое число, в диапазоне 0..255.\\
  
-Может принимать одно из двух значений true или false. boolean занимает в памяти один байт. 
-\\ 
 ==== int ==== ==== int ====
 Тип данных int (от англ. integer - целое число) один из наиболее часто используемых типов данных для хранения чисел. int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767 (от -2^15 до 2^15-1).\\ Тип данных int (от англ. integer - целое число) один из наиболее часто используемых типов данных для хранения чисел. int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767 (от -2^15 до 2^15-1).\\
 +
 Для размещения отрицательных значений int использует, так называемый, дополнительный код представления числа. Старший бит указывает на отрицательный знак числа, остальные биты инвертируются с добавлением 1.\\ Для размещения отрицательных значений int использует, так называемый, дополнительный код представления числа. Старший бит указывает на отрицательный знак числа, остальные биты инвертируются с добавлением 1.\\
 +
 Arduino компилятор сам заботиться о размещении в памяти и представлении отрицательных чисел, поэтому арифметические действия над целыми числами производятся как обычно.\\ Arduino компилятор сам заботиться о размещении в памяти и представлении отрицательных чисел, поэтому арифметические действия над целыми числами производятся как обычно.\\
 Когда переменная типа int в следствие арифметической операции достигает своего максимального значения, она "перескакивает" на самое минимальное значение и наоборот.\\ Когда переменная типа int в следствие арифметической операции достигает своего максимального значения, она "перескакивает" на самое минимальное значение и наоборот.\\
 +
 ==== unsigned int ==== ==== unsigned int ====
 Тип данных unsigned int - без знаковое целое число, также как и тип int (знаковое) занимает в памяти 2 байта. Но в отличие от int, тип unsigned int может хранить только положительные целые числа в диапазоне от 0 до 65535 (2^16)-1).\\ Тип данных unsigned int - без знаковое целое число, также как и тип int (знаковое) занимает в памяти 2 байта. Но в отличие от int, тип unsigned int может хранить только положительные целые числа в диапазоне от 0 до 65535 (2^16)-1).\\
 Отличие кроется в том как unsigned int использует старший бит, иногда называемый знаковый бит. Если старший бит равен 1, то для типа int компилятор Arduino считает, что это число отрицательное, а остальные 15 bit несут информацию о модуле целого числа в дополнительном коде представления числа, в то время как unsigned int использует все 16 бит для хранения модуля числа.\\ Отличие кроется в том как unsigned int использует старший бит, иногда называемый знаковый бит. Если старший бит равен 1, то для типа int компилятор Arduino считает, что это число отрицательное, а остальные 15 bit несут информацию о модуле целого числа в дополнительном коде представления числа, в то время как unsigned int использует все 16 бит для хранения модуля числа.\\
 +
 ==== long ==== ==== long ====
 Тип данных long используется для хранения целых чисел в расширенном диапазоне от -2,147,483,648 до 2,147,483,647. long занимает 4 байта в памяти.\\ Тип данных long используется для хранения целых чисел в расширенном диапазоне от -2,147,483,648 до 2,147,483,647. long занимает 4 байта в памяти.\\
 ==== unsigned long ==== ==== unsigned long ====
 Unsigned long используется для хранения положительных целых чисел в диапазоне от 0 до 4,294,967,295 (2^32 - 1) и занимает 32 бита (4 байта) в памяти.\\ Unsigned long используется для хранения положительных целых чисел в диапазоне от 0 до 4,294,967,295 (2^32 - 1) и занимает 32 бита (4 байта) в памяти.\\
 +
 +==== float ====
 +Тип данных float служит для хранения чисел с плавающей запятой. Этот тип часто используется для операций с данными, считываемыми с аналоговых входов. Диапазон значений — от -3.4028235E+38 до 3.4028235E+38. Переменная типа float занимает 32 бита (4 байта) в памяти.\\
 +
 +Тип float имеет точность 6-7 знаков, имеются ввиду все знаки, а не только мантисса. Обычно для увеличения точности используют другой тип - double, но на платформе Arduino, double и float имеют одинаковую точность.\\
 +
 +Хранение в памяти чисел с плавающей точкой в двоичной системе обуславливает потерю точности. Так, например, 6.0 / 3.0 не обязательно равен 2.0. Сравнивая два числа с плавающей точкой следует проверять не точное равенство, а разницу между этими числами, меньше ли она некого выбранной малого порога.\\
 +
 +Следует также учитывать, что арифметические операции над числами с плавающей запятой выполняются существенно медленнее, чем над целыми.\\
 +
 +==== double ====
 +Тип данных double, в отличие от большинства языков программирования, имеет ту же точность, что и тип float и занимает также 4 байта памяти.\\
 +
 +Тип double поддерживается в Arduino для совместимости кода с другими платформами.\\
 +
 +==== word ====
 +Тип данных word хранит 16-битное, не содержащее знака, число от 0 до 65535. Тоже самое, что unsigned int — (беззнаковое целое число).\\
 +
 +==== array ====
 +Массивы (arrays) — именованный набор однотипных переменных, с доступом к отдельным элементам по их индексу.\\
 +
 +==== string ====
 +Текстовые строки в Ардуино объявляются как массив (array) типа char (символов - литер), оканчивающийся символом "конца строки".\\
 +
 +==== String ====
 +String класс появился в версии Arduino 0019. Этот класс позволяет хранить и манипулировать текстовыми строками, по сравнению с string (массивом символов) класс String предоставляет удобные функции для работы со строками, такие как поиск вхождения в строку, объединение строк и др. Класс String занимает несколько больше места в памяти, чем массив символов string.\\
 +
 +Обратите внимание при обращение к классу String — он пишется с заглавной S. Массив символов string — с прописной s. Строковые константы, записанные в "двойных кавычка" интерпретируются компилятором как массив символов, а не объект класса String.\\
 +