ТЕМА 3: Типове данни Целочислен тип данни

 

I. Типове данни

 

 

1. Характеристики

 

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

C# е език със строг контрол на типовете данни.

Типовете данни се характеризират с:

  • Име – например int;
  • Размер (колко памет заемат) – например 4 байта;
  • Стойност по подразбиране (default value) – например 0.

2. Видове

 

Базовите типове данни в C# се разделят на следните видове:

  • Целочислени типове – sbytebyteshortushortintuintlong, ulong;
  • Реални типове с плаваща запетая – floatdouble;
  • Реални типове с десетична точност – decimal;
  • Булев тип – bool;
  • Символен тип – char;
  • Символен низ (стринг) – string;
  • Обектен тип – object.

Тези типове данни се наричат примитивни (built-in types), тъй като са вградени в езика C# на най-ниско ниво. В таблицата по-долу можем да видим изброените по-горе типове данни, техният обхват и стойностите им по подразбиране:

Тип данни

Стойност по подразбиране

Минимална стойност

Максимална стойност

sbyte

0

-128

127

byte

0

0

255

short

0

-32768

32767

ushort

0

0

65535

int

0

-2147483648

2147483647

uint

0u

0

4294967295

long

0L

-9223372036854775808

9223372036854775807

ulong

0u

0

18446744073709551615

float

0.0f

±1.5×10-45

±3.4×1038

double

0.0d

±5.0×10-324

±1.7×10308

decimal

0.0m

±1.0×10-28

±7.9×1028

boolean

false

Възможните стойности са две – true или false

char

‘\u0000′

‘\u0000′

‘\uffff’

object

null

-

-

string

null

-

-

 

II. Целочислен тип данни

1. Целочислените типове

Целочислените типове отразяват целите числа.

Те са sbyte, byte, short, ushort, int, uint, long и ulong.

Тип Размер (В) Обхват Пример
sbyte 1 –128 до 127 sbyte sb = -12;
byte 1 0 до 255 byte b = 12;
short 2 –32,768 до 32,767 short sn = -123;
ushort 2 0 до 65,535 ushort usn = 123;
int 4 –2,147,483,648 до 2,147,483,647 int n = 123;
uint 4 0 до 4,294,967,295 uint un = 123U;
long 8 –9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 long l = 123L;
ulong 8 0 до 18,446,744,073,709,551,615 long ul = 123UL;

 

2. Максимална и минимална стойност на различните целочислени типове

Използват се характеристиките MaxValue и MinValue

а) sbyte е 8-битов целочислен тип със знак (signed integer)

Стойността по подразбиране е числото 0.

SByte.MaxValue = 127 (27-1)

SByte.MinValue = -128 (-27)

 

б) byte е 8-битов беззнаков (unsigned)

Byte.MaxValue = 255 (28-1).

Byte.MinValue = 0

 

в) short е 16-битов тип със знак

Int16.MaxValue = 32767 (215-1).

Int16.MinValue = -32768 (-215)

 

г)ushort е 16-битов беззнаков тип

UInt16. MaxValue = 65535 (216-1).

UInt16.MinValue = 0

 

д) int е 32- битов знаков тип

Int32.MaxValue = 2 147 483 647 (231-1)

Int32.MinValue = -2 147 483 648 (-231)

 

е) uint е 32-битов беззнаков тип

Стойността по подразбиране е числото 0.

UInt32.MaxValue = 4 294 967 295 (232-1)

UInt32.MinValue = 0

 

ж) long е 64-битов знаков тип със стойност по подразбиране 0l или 0L

Int64.MaxValue = 9 223 372 036 854 775 807 (263-1)

Int64.MinValue = -9 223 372 036 854 775 808 (-263)

 

з) ulong е 64-битов беззнаков тип със стойност по подразбиране е числото 0u или 0U

UInt64.MaxValue = 18 446 744 073 709 551 615 (264-1)

UInt64.MinValue = 0

 

3. Примери и задачи:

Пример 1:

  При кликване върху команден бутон button1 да се изведе в label1.Text колко години, дни и часове има в този брой векове, който предварително е зададен в textBox1.Text. В  label1.Text да се изведе най-голямото цяло число (целочислен тип ulong).


        private void button1_Click(object sender, EventArgs e)
        {
            short centuries = 20;

            centuries = Convert.ToInt16(textBox1.Text);
          
            ushort years = 2000;

            uint days = 730480;

            ulong hours = 17531520;

            label1.Text=(centuries + " века са " + years +

              " години или " + days + " дни или " + hours + " часове.");
           
            ulong maxIntValue = UInt64.MaxValue;

            label2.Text="Най-голямо цяло число: "+maxIntValue; // 18446744073709551615


        }

 

Пример 2:

Да се изчертае команден бутон button1, текстово поле  textBox1, и етикети label1, label2 и label3. В  textBox1.Text да се запише брой секунди и при кликване върху команден бутон button1 да се изведе колко  дни (label1), часове (label2) и минути (label3) има в този брой секунди. Да се поставят подходящи надписи в 4 етикета  label4, label5, label6, label7, в които да се посочи къде се извеждат секунди, минути, часове и дни.


        private void button1_Click(object sender, EventArgs e)
        {
            uint seconds, minutes, hours, days;
            seconds = Convert.ToUInt32(textBox1.Text);
            minutes = seconds / 60;
            hours = minutes / 60;
            days = hours / 24;
            label1.Text = Convert.ToString(minutes);
            label2.Text = Convert.ToString(hours);
            label3.Text = Convert.ToString(days);
        }

 
Задача 1:

Ако електронен часовник показва 00:00:00, то след брой секунди, посочени в текстово поле, какво ще е изписано на електронния часовник. Да се изчертае подходящ интерфейс.

Търсене