русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Целые числа

Для представления целых чисел в языке C++ существует несколько типов – char, short int и long (полное название типов: short int, long int, unsigned long int и т.д.. Поскольку описатель int можно опустить, мы используем сокращенные названия). Они отличаются друг от друга диапазоном возможных значений. Каждый из этих типов может быть знаковым или беззнаковым. По умолчанию, тип целых величин – знаковый. Если перед определением типа стоит ключевое слово unsigned , то тип целого числа — беззнаковый. Для того чтобы определить переменную x типа короткого целого числа, нужно записать:

short x;

Число без знака принимает только положительные значения и значение ноль. Число со знаком принимает положительные значения, отрицательные значения и значение ноль.

Целое число может быть непосредственно записано в программе в виде константы. Запись чисел соответствует общепринятой нотации. Примеры целых констант: 0, 125, -37. По умолчанию целые константы принадлежат к типу int. Если необходимо указать, что целое число — это константа типа long , можно добавить символ L или l после числа. Если константа беззнаковая, т.е. относится к типу unsigned long или unsigned int , после числа записывается символ U или u. Например: 34U, 700034L, 7654ul.

Кроме стандартной десятичной записи, числа можно записывать в восьмеричной или шестнадцатеричной системе счисления. Признаком восьмеричной системы счисления является цифра 0 в начале числа. Признаком шестнадцатеричной — 0x или 0X перед числом. Для шестнадцатеричных цифр используются латинские буквы от A до F (неважно, большие или маленькие).

Таким образом, фрагмент программы

const int x = 240;int y = 0360;const int z = 0xF0;

определяет три целые константы x, y и z с одинаковыми значениями.

Отрицательные числа предваряются знаком минус "-". Приведем еще несколько примеров:

// ошибка в записи восьмеричного числаconst usigned long ll = 0678; // правильная записьconst short a = 0xa4; // ошибка в записи десятичного числаconst int x = 23F3;

Для целых чисел определены стандартные арифметические операции сложения (+), вычитания (-), умножения (*), деления (/); нахождение остатка от деления (%), изменение знака (-). Результатом этих операций также является целое число. При делении остаток отбрасывается. Примеры выражений с целыми величинами:

x + 4;30 — x;x * 2;-x;10 / x;x % 3;

Кроме стандартных арифметических операций, для целых чисел определен набор битовых (или поразрядных) операций. В них целое число рассматривается как строка битов (нулей и единиц при записи числа в двоичной системе счисления или разрядов машинного представления).

К этим операциям относятся поразрядные операции И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, поразрядное отрицание и сдвиги. Поразрядная операция ИЛИ, обозначаемая знаком |, выполняет операцию ИЛИ над каждым индивидуальным битом двух своих операндов. Например, 1 | 2 в результате дают 3, поскольку в двоичном виде 1 это 01, 2 – это 10, соответственно, операция ИЛИ дает 11 или 3 в десятичной системе (нули слева мы опустили).

Аналогично выполняются поразрядные операции И, ИСКЛЮЧАЮЩЕЕ ИЛИ и отрицание.

3 | 1 результат 34 & 7 результат 44 ^ 7 результат 30 & 0xF результат 0~0x00F0 результат 0xFF0F

Операция сдвига перемещает двоичное представление левого операнда на количество битов, соответствующее значению правого операнда. Например, двоичное представление короткого целого числа 3 – 0000000000000011. Результатом операции 3 << 2 (сдвиг влево) будет двоичное число 0000000000001100 или, в десятичной записи, 12. Аналогично, сдвинув число 9 (в двоичном виде 0000000000001001) на 2 разряда вправо (записывается 9 >> 2) получим 0000000000000010, т.е. 2.

При сдвиге влево число дополняется нулями справа. При сдвиге вправо бит, которым дополняется число, зависит от того, знаковое оно или беззнаковое. Для беззнаковых чисел при сдвиге вправо они всегда дополняются нулевым битом. Если же число знаковое, то значение самого левого бита числа используется для дополнения. Это объясняется тем, что самый левый бит как раз и является знаком — 0 означает плюс и 1 означает минус. Таким образом, если

short x = 0xFF00;unsigned short y = 0xFF00;

то результатом x >> 2 будет 0xFFC0 (двоичное представление 1111111111000000), а результатом y >> 2 будет 0x3FC0 (двоичное представление 0011111111000000).

Рассмотренные арифметические и поразрядные операции выполняются над целыми числами и в результате дают целое число. В отличие от них операции сравнения выполняются над целыми числами, но в результате дают логическое значение истина ( true ) или ложь ( false ).

Для целых чисел определены операции сравнения: равенства (==), неравенства (!=), больше (>), меньше (<), больше или равно (>=) и меньше или равно (<=).

Последний вопрос, который мы рассмотрим в отношении целых чисел, – это преобразование типов. В языке C++ допустимо смешивать в выражении различные целые типы. Например, вполне допустимо записать x + y, где x типа short , а y – типа long . При выполнении операции сложения величина переменной x преобразуется к типу long . Такое преобразование можно произвести всегда, и оно безопасно, т.е. мы не теряем никаких значащих цифр. Общее правило преобразования целых типов состоит в том, что более короткий тип при вычислениях преобразуется в более длинный. Только при выполнении присваивания длинный тип может преобразовываться в более короткий. Например:

short x;long y = 15;. . .x = y; // преобразование длинного типа// в более короткий

Такое преобразование не всегда безопасно, поскольку могут потеряться значащие цифры. Обычно компиляторы, встречая такое преобразование, выдают предупреждение или сообщение об ошибке.

Просмотров: 605


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.