C# 4.0: полное руководство | страница 38
Целочисленные типы со знаком имеют большое значение для очень многих алгоритмов, но по абсолютной величине они наполовину меньше своих аналогов без знака. Вот как, например, выглядит число 32 767 типа >short
в двоичном представлении.
>0111111111111111
Если установить старший разряд этого числа равным 1, чтобы получить значение со знаком, то оно будет интерпретировано как -1, принимая во внимание формат дополнения до двух. Но если объявить его как значение типа >ushort
, то после установки в 1 старшего разряда оно станет равным 65 535.
Вероятно, самым распространенным в программировании целочисленным типом является тип >int
. Переменные типа >int
нередко используются для управления циклами, индексирования массивов и математических расчетов общего назначения. Когда же требуется целочисленное значение с большим диапазоном представления чисел, чем у типа >int
, то для этой цели имеется целый ряд других целочисленных типов. Так, если значение нужно сохранить без знака, то для него можно выбрать тип >uint
, для больших значений со знаком — тип >long
, а для больших значений без знака — тип >ulong
. В качестве примера ниже приведена программа, вычисляющая расстояние от Земли до Солнца в дюймах. Для хранения столь большого значения в ней используется переменная типа >long
.
>// Вычислить расстояние от Земли до Солнца в дюймах.
>using System;
>class Inches {
> static void Main() {
> long inches;
> long miles;
> miles = 93000000; // 93 000 000 миль до Солнца
> // 5 280 футов в миле, 12 дюймов в футе,
> inches = miles * 5280 * 12;
> Console.WriteLine("Расстояние до Солнца: " + inches + " дюймов.");
> }
>}
Вот как выглядит результат выполнения этой программы.
>Расстояние до Солнца: 5892480000000 дюймов.
Очевидно, что этот результат нельзя было бы сохранить в переменной типа >int
или >uint
.
Самыми мелкими целочисленными типами являются >byte
и >sbyte
. Тип >byte
представляет целые значения без знака в пределах от 0 до 255. Переменные типа >byte
особенно удобны для обработки исходных двоичных данных, например байтового потока, поступающего от некоторого устройства. А для представления мелких целых значений со знаком служит тип