Целочислените типове данни отразяват целите числа и могат да бъдат със знак (signed) или без знак (unsigned) в зависимост от желания диапазон от стойности. За да се определи подобен целочислен тип данни, е необходимо да се постави ключовата дума signed или unsigned пред самия тип данни. По подразбиране, ако това не е направено, то типа данни се приема за такъв със знак.[1] Разликата е че signed могат да бъдат с положителни или отрицателни стойности, докато unsigned могат да бъдат само положителни стойности (и нула). Предимството на unsigned е, че може да съхраняват по-големи стойности, стига да е сигурно, че те винаги са положителни.
Битове
|
Име
|
Диапазон
|
Брой цифри
|
Приложение
|
C/C++ |
C# |
Pascal и Delphi |
Java |
SQL
|
4
|
nibble, semioctet
|
Signed: от −8 до 7, от −(23) до 23 − 1
|
1
|
n/a
|
n/a
|
n/a
|
n/a
|
Unsigned: от 0 до 15, което е 24 − 1
|
2
|
8
|
byte, octet
|
Signed: от −128 до 127, от −(27) до 27 − 1
|
3
|
int8_t, char
|
sbyte
|
Shortint
|
byte
|
tinyint
|
Unsigned: от 0 до 255, което е 28 − 1
|
3
|
uint8_t, char
|
byte
|
Byte
|
n/a
|
unsigned tinyint
|
16
|
halfword, word, short
|
Signed: от −32 768 до 32 767, от −(215) до 215 − 1
|
5
|
int16_t, short, int
|
short
|
Smallint
|
short
|
smallint
|
Unsigned: от 0 до 65 535, което е 216 − 1
|
5
|
uint16_t
|
ushort
|
Word
|
char
|
unsigned smallint
|
32
|
word, long, doubleword, longword, int
|
Signed: от −2 147 483 648 до 2 147 483 647, от −(231) до 231 − 1
|
10
|
int32_t, int, long
|
int
|
LongInt; Integer
|
int
|
int
|
Unsigned: от 0 до 4 294 967 295, което е 232 − 1
|
10
|
uint32_t
|
uint
|
LongWord; DWord; Cardinal
|
n/a
|
unsigned int
|
64
|
word, doubleword, longword, long long, quad, quadword, int64
|
Signed: от −9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, от −(263) до 263 − 1
|
19
|
int64_t, long, long long
|
long
|
Int64
|
long
|
bigint
|
Unsigned: от 0 до 18 446 744 073 709 551 615, което е 264 − 1
|
20
|
uint64_t
|
ulong
|
UInt64; QWord
|
n/a
|
unsigned bigint
|
128
|
octaword, double quadword
|
Signed: от −170 141 183 460 469 231 731 687 303 715 884 105 728 до 170 141 183 460 469 231 731 687 303 715 884 105 727, от −(2127) до 2127 − 1
|
39
|
C: only available as non-standard compiler-specific extension
|
n/a
|
n/a
|
n/a
|
Unsigned: от 0 до 340 282 366 920 938 463 463 374 607 431 768 211 455, което е 2128 − 1
|
39
|
n
|
n-bit integer (общ случай)
|
Signed: (−(2n−1)) до (2n−1 − 1)
|
⌈(n − 1) log10 2⌉
|
Ada: range -2**(n-1)..2**(n-1)-1
|
Unsigned: 0 до (2n−1)
|
⌈n log10 2⌉
|
Ada: range 0..2**n-1 , mod 2**n
|
- Не всички SQL диалекта имат беззнакови типове данни.
- Размерите на char, short, int, long and long long са зависими от изпълнението на езика.
- Размерите на Delphi's Integer and Cardinal не са гарантирани, различни от платформа на платформа; обикновено се определя като LongInt и LongWord съответно.
- Java не подпомага директно аритметиката на видовеte char. Резултатите трябва да бъдат преобразувани обратно до char от int.
Целочислените типове отразяват целите числа и биват – byte, short, int и long.
- Целочисленият тип byte. Той е 8-битов знаков тип, което означава, че броят на възможните стойности е 2 на степен 8, т.е. 256 възможни положителни и отрицателни стойности общо. Стойността по подразбиране е числото 0. Минималната стойност, която заема, е -128, а максималната +127.
- Целочисленият тип short. Той е 16-битов знаков тип. В параграфа за типа byte по-горе изяснихме какво означава знаков тип и какво значение отдава броят на битовете. Стойността по подразбиране е числото 0. Минималната стойност, която заема, е числото -32768, а максималната – +32767.
- Типът int. Той е 32-битов целочислен знаков тип. С нарастването на битовете нарастват и възможните стойности, които даден тип може да заема. Стойността по подразбиране е числото 0. Минималната стойност, която заема, е -2 147 483 648, а максималната +2 147 483 647.
- Типът long. Той е 64-битово цяло число със знак със стойност по подразбиране 0L. Знакът L указва, че числото е от тип long (иначе се подразбира int). Минималната стойност, която типът long заема, е -9 223 372 036 854 775 808, а максималната +9 223 372 036 854 775 807.
|
Когато можем да използваме типът byte вместо типа int или long, не се колебайте да използвате byte. Това ще спести от заеманата в компютъра памет.
|
Пример, в който декларираме няколко променливи от познатите ни целочислени типове, инициализираме ги и ги отпечатваме на конзолата.
// Declare some variablesbyte centuries = 20;
short years = 2000;
int days = 730480;
long hours = 17531520;
// Print the result on the console
System.out.println(centuries + " centuries is " + years +
" years, or " + days + " days, or " + hours + " hours.");
|
В разгледания по-горе пример демонстрираме използването на целочислените типове. За малки числа използваме типът byte, а за много големи – целочисленият тип long.
Резултата от горния фрагмент:
20 centuries is 2000 years, or 730480 days, or 17531520 hours.
|
Целочислените типове[1] отразяват целите числа и биват sbyte, byte, short, ushort, int, uint, long и ulong.
- Типът sbyte е 8-битов целочислен тип със знак (signed integer). Това означава, че броят на възможните му стойности е 28, т.е. 256 възможни стойности общо, като те могат да бъдат както положителни, така и отрицателни. Минималната стойност, която може да се съхранява в sbyte, е SByte.MinValue = -128 (-27), а максималната е SByte.MaxValue = 127 (27-1). Стойността по подразбиране е числото 0.
- Типът byte е 8-битов беззнаков (unsigned) целочислен тип. Той също има 256 различни целочислени стойности (28), но те могат да бъдат само неотрицателни. Стойността по подразбиране на типа byte е числото 0. Минималната му стойност е Byte.MinValue = 0, а максималната е Byte.MaxValue = 255 (28-1).
- Целочисленият тип short е 16-битов тип със знак. Минималната стойност, която може да заема, е Int16.MinValue = -32768 (-215), а максималната – Int16.MaxValue = 32767 (215-1). Стойността по подразбиране е числото 0.
- Типът ushort е 16-битов беззнаков тип. Минималната стойност, която може да заема, е UInt16.MinValue = 0, а максималната – UInt16. MaxValue = 65535 (216-1). Стойността по подразбиране е числото 0.
- Tипът int. Той е 32-битов знаков тип. С нарастването на битовете нарастват и възможните стойности, които даден тип може да заема. Стойността по подразбиране е числото 0. Минималната стойност, която може да заема, е Int32.MinValue = -2 147 483 648 (-231), а максималната e Int32.MaxValue = 2 147 483 647 (231-1). Типът int е най-често използваният тип в програмирането. Обикновено програмистите използват int, когато работят с цели числа, защото този тип е естествен за 32-битовите микропроцесори и е достатъчно „голям“ за повечето изчисления, които се извършват в ежедневието.
- Типът uint е 32-битов беззнаков тип. Стойността по подразбиране е числото 0u или 0U (двата записа са еквивалентни). Символът 'u' указва, че числото е от тип uint (иначе се подразбира int). Минималната стойност, която може да заема, е UInt32.MinValue = 0, а максималната му стойност е UInt32.MaxValue = 4 294 967 295 (232-1).
- Типът long е 64-битов знаков тип със стойност по подразбиране 0l или 0L (двете са еквивалентни, но за предпочитане е да използвате L, тъй като l лесно се бърка с цифрата едно 1). Символът 'L указва, че числото е от тип long (иначе се подразбира int). Минималната стойност, която може да заема типът long, е Int64.MinValue = -9 223 372 036 854 775 808 (-263), а максималната му стойност е Int64.MaxValue = 9 223 372 036 854 775 807 (263-1).
- Най-големият целочислен тип е типът ulong. Той е 64-битов беззнаков тип със стойност по подразбиране числото 0u или 0U (двата записа са еквивалентни). Символът 'u указва, че числото е от тип ulong (иначе се подразбира long). Минималната стойност, която може да бъде записана в типа ulong е UInt64.MinValue = 0, а максималната – UInt64.MaxValue = 18 446 744 073 709 551 615 (264-1).
Пример, в който декларираме няколко променливи от познатите ни целочислени типове, инициализираме ги и отпечатваме стойностите им на конзолата:
// Declare some variablesbyte centuries = 20;
short years = 2000;
int days = 730480;
long hours = 17531520;
// Print the result on the console
System.out.println(centuries + " centuries is " + years +
" years, or " + days + " days, or " + hours + " hours.");
|
В разгледания по-горе пример демонстрираме използването на целочислените типове. За малки числа използваме типа byte, а за много големи – ulong. Използваме беззнакови типове, тъй като всички използвани стойности са положителни числа.