Что такое byte в паскале
Перейти к содержимому

Что такое byte в паскале

  • автор:

Byte/ru

Тип byte (байт) является беззнаковым integer (целым) типом, представляющим значения в диапазоне 0 .. 255 и занимающим 8 бит. Типы byte и char являются одним и тем же в FPC версии 3.

Contents

  • 1 Корректные значения
  • 2 Стандартные функции
    • 2.1 Преобразование в символ и из него
    • 2.2 Строковое представление

    Корректные значения

    Ключевое отличие состоит в том, что byte может использоваться только в качестве числового type (типа), тогда как char может использоваться как символ или как часть строкового типа и не может использоваться в арифметическом выражении. byte всегда будет иметь тот же размер, что и ansiChar , но в будущем char может считаться синонимом wideChar , а не ansiChar .

    var c: byte; ch: char; begin c := 65; ch := 'A'; c := 'A'; ch := 65; end. 

    Использование типов данных byte или byte обеспечивает лучшую документированность при работе с конкретными переменными.

    Стандартные функции

    Преобразование в символ и из него

    Тип byte может быть приведен к типу char с помощью функции chr . Значения типа chr могут быть приведены к типу byte с помощью функции ord .

    Исправленный вариант приведенной выше программы:

    program ordChrDemo(input, output, stderr); var foo: byte; bar: char; begin foo := 65; bar := 'A'; foo := ord('A'); // chr(65) это эквивалент #65 bar := chr(65); bar := #65; // альтернатива: приведения типов // приведения типов константных выражений // гарантированно произойдет во время компиляции foo := byte('A'); bar := char(65); end. 

    Строковое представление

    Функцию binStr function из модуля system можно использовать для получения string (строки), показывающей двоичное представление byte :

    program binStrDemo(input, output, stderr); var foo: byte; begin foo := 10; writeLn(binStr(foo, 8)); end. 
    00001010

    Более универсальной функцией является intToBin , предоставляемая модулем strUtils .

    Типы данных
    Простые типы Boolean | Byte | Cardinal | Char | Currency | Extended | Int64 | Integer | Longint | Pointer | Real | Shortint | Smallint | Word
    Сложные типы Array | Class | Record | Set | String | Shortstring

    Что такое byte в паскале

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

    Тип данных определяет:

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

    Область памяти, в которой хранится значение определенного типа, называется переменной. У переменной есть имя (идентификатор), тип и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменить. Перед использованием любая переменная должна быть описана. Описание переменных в языке Free Pascal осуществляется в разделе описания переменных.

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

    К скалярным типам относятся стандартные типы и типы, определяемые пользователем. Стандартные скалярные типы включают в себя целые, действительные, символьный, логические и адресный типы. Скалярные типы, определяемые пользователем, – это перечисляемый и интервальный типы.

    Структурированные типы имеют четыре разновидности: массивы, множества, записи и файлы.

    Рассмотрим основные типы данных.

    Символьный тип данных

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

    Описывают символьный тип с помощью служебного слова char.

    В тексте программы значения переменных и константы символьного типа должны быть заключены в апострофы: ‘а’, ‘b’, ‘+’.

    Целочисленный тип данных

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

    Таблица 1. Целочисленные типы данных

    Типы данных в Паскале

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

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

    Переменные описываются до основного кода программы. Здесь указываются имена переменных и тип хранимых в них данных.

    В языке программирования Паскаль достаточно много типов данных. Кроме того, сам пользователь может определять свои типы.

    Тип переменной определяет, какие данные можно хранить в связанной с ней ячейке памяти.

    Переменные типа integer могут быть связаны только с целыми значениями обычно в диапазоне от -32768 до 32767. В Pascal есть другие целочисленные типы ( byte , longint ).

    Переменные типа real хранят вещественные (дробные) числа.

    Переменная булевского (логического) типа ( boolean ) может принимать только два значения — true (1, правда) или false (0, ложь).

    Символьный тип ( char ) может принимать значения из определенной упорядоченной последовательности символов.

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

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

    Все вышеописанное – это простые типы данных. Но бывают и сложные, структурированные, которые базируются на простых типах.

    Массив – это структура, занимающая в памяти единую область и состоящая из фиксированного числа компонентов одного типа.

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

    Запись – это структура, состоящая из фиксированного числа компонент, называемых полями. В разных полях записи данные могут иметь разный тип.

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

    Файлы для Pascal представляют собой последовательности однотипных данных, которые хранятся на устройствах внешней памяти (например, жестком диске).

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

    Явное преобразование типов

    В ряде случаев в Pascal происходит автоматический переход от одного типа данных к другому (от целого к действительному, от символьного к строковому и т.д.). Существует также ряд функций, осуществляющих преобразование типов ( ord , chr , trunc , round ). Наряду с этим в Паскаль возможно явное преобразование типов (ретипизация данных). Для того, чтобы осуществить явное преобразование типа, необходимо использовать имя типа аналогично тому, как используется имя функции. В качестве параметра в этом случае указывается имя преобразуемой переменной.

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

    Пример задачи, где используется явное преобразование типов

    Вычислить значение функции sign(x) = 1 при x > 0; 0 при x = 0; -1 при x < 0.

    var x: real; sign: integer; begin readln(x); sign := byte(x > 0) - byte(x < 0); writeln(sign); end.

    В программе при положительном значении x выражение x > 0 принимает значение true , а выражение x < 0 — false. В результате получается, что byte(x >0) = 1 , byte(x < 0) = 0 , а sign = 1 . При отрицательном значении x byte(x >0) = 0 , byte(x < 0) = 1 , sign = -1 . При нулевом значении x sign = 0 .

    Byte

    A byte is an unsigned integer in the range of 0 .. 255 . A byte is 8 bits long. A byte and a char are virtually the same thing as of version 3 of FPC.

    Contents

    • 1 Valid values
    • 2 Standard functions
      • 2.1 Conversion to and from character
      • 2.2 String representation

      Valid values

      The key difference is, a byte can only be referred to as a numeric type , while a char can be used as a character, or as part of a string type, and cannot be used in an arithmetic expression. A byte will always be the same size as an ansiChar , but in the future char may be considered a synonym for wideChar , not ansiChar .

      program byteDemo(input, output, stderr); var foo: byte; bar: char; begin // those two assignments are physically the same foo := 65; bar := 'A'; // although they are the same action, // the following would be illegal //foo := 'A'; //bar := 65; end. 

      The use of byte or byte as a data type provides better documentation as to the purpose of the use of the particular variable.

      Standard functions

      Conversion to and from character

      The byte type can be coerced to char by using the chr function. Char type values can be coerced to byte by using the ord function.

      The above program corrected to legal use:

      program ordChrDemo(input, output, stderr); var foo: byte; bar: char; begin foo := 65; bar := 'A'; foo := ord('A'); // chr(65) is equivalent to #65 bar := chr(65); bar := #65; // alternatively: typecasts // typecasts of constant expressions // are guaranteed to happen at compile-time foo := byte('A'); bar := char(65); end. 

      String representation

      The binStr function from the system unit can be used to get a string showing the binary representation of a byte :

      program binStrDemo(input, output, stderr); var foo: byte; begin foo := 10; writeLn(binStr(foo, 8)); end. 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *