Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инфа- ответы на теор.вопросы.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
760 Кб
Скачать
☆

Беззнаковые целые

Беззнаковые целые представляют только неотрицательные числа, при этом все разряды кода используются для представления значения числа и максимальное число соответствует единичным значениям кода во всех разрядах: 111…111. m-байтовая переменная целого типа без знака, очевидно, принимает значения от 0 до +28m−1.

В C и C++ для обозначения беззнаковых типов используется префикс unsigned. В C# в качестве показателя беззнаковости используется префикс u (англ. unsigned). Например, для объявления беззнакового целого, равного по размеру одному машинному слову используется тип uint.

Беззнаковые целые, в частности, используются для адресации памяти, представления символов.

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

В некоторых языках, например java, беззнаковые целые типы (за исключением символьного) отсутствуют.

Неправильное использование беззнаковых целых может приводить к неочевидным ошибкам из-за возникающего переполнения[4]. В приведённом ниже примере использование беззнаковых целых в цикле в C и C++превращает этот цикл в бесконечный:

char ar[N];

for (unsigned int i = N-1; i >= 0; --i)

ar[i] = i;

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

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

  • внутреннее представление данных в памяти компьютера;

  • множество значений, которые могут принимать величины этого типа;

  • операции и функции, которые можно применять к величинам этого типа.

Исходя из этих характеристик, программист выбирает тип каждой величины, используемой в программе для представления реальных объектов. Обязательное описание типа позволяет компилятору производить проверку допустимости различных конструкций программы. От выбора типа величины зависит последовательность машинных команд, построенная компилятором.

Все типы языка С++ можно разделить на простые (скалярные), составные (агрегатные) и функциональные. Простые типы могут быть стандартными и определенными программистом.

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

Простые типы данных

Простые типы делятся на целочисленные типы и типы с плавающей точкой. Для описания стандартных типов определены следующие ключевые слова:

  • int (целый);

  • char (символьный);

  • wchar_t (расширенный символьный);

  • bool (логический);

  • float (вещественный);

  • double (вещественный с двойной точностью).

Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:

  • short (короткий);

  • long (длинный);

  • signed (со знаком);

  • unsigned (без знака).

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

Тип

 

Размер байт

Значения

bool

логические

1

True или  false

Unsigned short int

Беззнаковое короткое целое

2

0—65535

Short int

Короткое целое

2

-32768—32767

Unsigned long int

Беззнаковое длинное целое

4

0—4294967295

long int

Длинное целое

4

-2147483648—2147483647

int

Целое

2

-32768—32767

Unsigned int

Беззнаковое целое

2

0—65535

char

символьное

1

256 значений

float

Действительное

4

1,2е-38—3,4е38

double

Двойной точности

8

2,2е-308—1,8е308

Машинные слова в Си. Базовые типы данных целых чисел реализованы в машинных словах различной размерности, поэтому для задания в программе машинных слов нужно просто определить ту или иную целую переменную. Тип данных char всегда соответствует байту, int – стандартной размерности машинного слова, обрабатываемого процессором, long – машинному слову увеличенной размерности по отношению к стандартному (обычно двойной). Операция sizeof, определяющая размерность любого типа данных в байтах, может быть использована и для «измерения» машинных слов, количество двоичных разрядов в машинном слове определяется выражением 8*sizeof(тип данных).

 

long      vv;                                                         // Машинное слово двойной длины

for(int i=0; i<8*sizeof(long); i++)                           // Количество разрядов в long

            { … vv … }                                             // Цикл поразрядной обработки слова