02 Arithmetic Data Types

  • 534 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
534
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Бублик Володимир Васильович Програмування - 2 Лекція 2. Базові поняття програмування. Арифметичні типи даних ftp://student@ftp.unicyb.kiev.ua/programming2 Лекції для студентів 2 курсу
  • 2. Арифметичні типи даних
    • Основні типи:
      • Логічний bool,
      • Символьний сhar,
      • Цілий int,
      • Дійсний (з подвоєною точністю) double
    • Інші арифметичні типи служать предметом особливих застосувань (оптимізація, системне програмування, тощо).
  • 3. Логічний тип
    • false < true
    • bool b = true;
    • cout << noboolalpha << b << &quot; == &quot;
    • << boolalpha << b << endl;
    • 1 == true
    • false + false == false
    • false + true == true
    • true + false == true
    • true + true == true
  • 4. Доповнений код
    • (Повторення)
    • Як обчислити двійковий код -1
    • Записати код 1
    • Інвертувати його
    • Додати 1: одержимо -1
    0000000 1 1 1111111 1 111111 0
  • 5. Доповнений код
    • (Далі повторення)
    • Як обчислити двійковий код -128
    • Записати код 128
    • Інвертувати його
    • Додати 1: одержимо -128
    • Пам'ятайте:
    • 127 + 1 == -128 ( sorry )
    10000000 1 0000000 0 111111 1
  • 6. Символьний тип
    • char
    • Без знаку від 0 до 255 ( FF) unsigned
    • Зі знаком від -128 до 127 signed
    00000000 11111111 1 0000000 0 1111111
  • 7. Короткий цілий тип
    • short int
    • Без знаку від 0 до 65535 unsigned
    • Зі знаком від -32768 до 32767 signed
    00000000 0 0000000 11111111 11111111 00000000 1 0000000 11111111 0 1111111
  • 8. Дійсний тип
    • float
    • порядок мантиса
    • Мінімальний порядок -37, максимальний 38
    • Кількість десяткових знаків мантиси 6
    00000000 00000000 0 0000000 0 0000000
  • 9. Арифметичні типи даних long double розширена точність double подвоєна точність sizeof(float) ≤ sizeof(double) ≤ sizeof(long double) float Дійсний, звичайна точність unsigned short wchar_t Довгий символ unsigned long (unsigned long int) long (long int) unsigned (unsigned int) int (signed int) unsigned short (unsigned short int) Визначається з умов 1≡sizeof(char) ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long); 1≤ sizeof(bool)≤ sizeof(long); sizeof(N)≡sizeof(signed N) ≡sizeof(unsigned N); short (short int) Цілий від -128 до 127 ( 127+1=-128 ) signed сhar від 0 до 255 ( 255+1=0 ) сhar, unsigned сhar Символьний false, true (true+true==true) bool Логічний (булів) Діапазон значень Позначення Назва типу
  • 10. Розрядність
    • #include <iostream>
    • using namespace std;
    • int main()
    • {
    • bool b;
    • char c;
    • unsigned char cu;
    • signed char csg;
    • short s;
    • short int is;
    • signed short int issg;
    • unsigned short int ius;
    • unsigned short su;
    • int i;
    • signed int isg;
    • unsigned int iu;
    • signed sg;
    • unsigned u;
    • long int il;
    • signed long int ilsg;
    • long l;
    • signed long lsg;
    • unsigned long int ilu;
    • unsigned long lu;
    • float f;
    • double d;
    • long double ld;
  • 11. Розрядність
    • cout
    • << &quot; bool= &quot; << sizeof(b)
    • << &quot; char= &quot; << sizeof(c)
    • << &quot; unsigned char = &quot; << sizeof(cu)
    • << &quot; signed char = &quot; << sizeof(csg)
    • << &quot; short = &quot; << sizeof(s)
    • << &quot; short int= &quot; << sizeof(is)
    • << &quot; signed short int = &quot; << sizeof(issg)
    • << &quot; unsigned short int = &quot; << sizeof(ius)
    • << &quot; unsigned short = &quot; << sizeof(su)
    • << &quot; int = &quot; << sizeof(i)
    • << &quot; signed int = &quot; << sizeof(isg)
    • << &quot; unsigned int = &quot; << sizeof(iu)
  • 12. Розрядність
    • << &quot; signed int = &quot; << sizeof(isg)
    • << &quot; unsigned int = &quot; << sizeof(iu)
    • << &quot; signed = &quot; << sizeof(sg)
    • << &quot; unsigned= &quot; << sizeof(u)
    • << &quot; long int= &quot; << sizeof(il)
    • << &quot; signed long int= &quot; << sizeof(ilsg)
    • << &quot; long = &quot; << sizeof(l)
    • << &quot; signed long = &quot; << sizeof(lsg)
    • << &quot; unsigned long int= &quot; << sizeof(ilu)
    • << &quot; unsigned long = &quot; << sizeof(lu)
    • << &quot; float = &quot; << sizeof(f)
    • << &quot; double = &quot; << sizeof(d)
    • << &quot; long double = &quot; << sizeof(ld)
    • << endl;
    • return 0;
    • }
  • 13. Розрядність
    • bool= 1
    • char= 1
    • unsigned char = 1
    • signed char = 1
    • short = 2
    • short int= 2
    • signed short int = 2
    • unsigned short int = 2
    • unsigned short = 2
    • 2 8 – 1 = 255
    • 2 16 – 1 = 32 677
  • 14. Розрядність
    • int = 4
    • signed int = 4
    • unsigned int = 4
    • signed = 4
    • unsigned= 4
    • long int= 4
    • signed long int= 4
    • long = 4
    • signed long = 4
    • unsigned long int= 4
    • unsigned long = 4
    • “ Основна тотожність інформатики”
    • 2 10 ≈ 10 3
    • 2 32 = 2 2 ∙ (2 10 ) 3 ≈
    • 4 ∙ ( 10 3 ) 3 = 4 ∙ 10 9
    • 4 000 000 000
    • 2 32 – 1 = 4 294 967 295
    • 2 64 = 2 4 ∙ (2 10 ) 6 ≈
    • 16 ∙ ( 10 3 ) 6 = 16 ∙ 10 18 =
    • 16 000 000 000 000 000 000
  • 15. Розрядність
    • Як кодуються дійсні числа?
    • float = 4
    • Скільки десяткових знаків містить дійсне число?
    • double = 8
    • long double = 8
    • Скільки десяткових знаків містить дійсне число подвоєної точності?
    • 2 32 = 2 2 ∙ (2 10 ) 3 ≈
    • 4 ∙ ( 10 3 ) 3 = 4 ∙ 10 9
    • 4 000 000 000
    • 2 32 – 1 = 4 294 967 295
    • 2 64 = 2 4 ∙ (2 10 ) 6 ≈
    • 16 ∙ ( 10 3 ) 6 = 16 ∙ 10 18 =
    • 16 000 000 000 000 000 000
  • 16. Стандартна бібліотека
    • #include <limits>
    • Приклади застосування
    • numeric_limits< short >::min();
    • numeric_limits< unsigned int >::m ax ();
    • numeric_limits< float >::max();
    • numeric_limits< double >::max_exponent10;
    • numeric_limits< double >::digits10
  • 17. Перелік ( enumeration )
    • enum week
    • {
    • monday,
    • tuesday,
    • wednesday,
    • thursday,
    • friday,
    • saturday,
    • s unday
    • } ;
    • cout<<monday; //?
  • 18. Перелік ( enumeration )
    • enum week
    • {
    • m onday = 1 ,
    • tuesday,
    • wednesday,
    • thursday,
    • friday,
    • saturday,
    • s unday
    • } ;
    • cout<<monday; //?
  • 19. Перелік ( enumeration )
    • enum number
    • {
    • two=2,
    • eight=8,
    • ten=10,
    • hex=16
    • }
  • 20. Арифметичні операції op1, op2 Кома , op1 - op2 Віднімання - op1 + op2 Додавання + op1 % op2 Остача % op1 / op2 Ділення / op1 * op2 Множення * Спосіб використання Назва Символ операції
  • 21. Операції порівняння Найрозповсюдженіша помилка початківців if (x=0) /*never come here*/; else cout<<x; op1 != op2 Не рівне != op1 == op2 Рівне == (не плутати з =) op1 >= op2 Більше або рівне >= op1 > op2 Більше > op1 <= op2 Менше або рівне <= op1 < op2 Менше < Спосіб використання Назва Символ операції
  • 22. Логічні операції Чим ( x < y ? x : y) відрізняється від if (x<y) x; else y; ? (op1 ? op2: op3) Імплікація (true ? x: y) == x (false ? x: y) == y ? : op1 || op2 Диз’юнкція || op1 && op2 Кон’юнкція && ! op Заперечення ! Спосіб використання Назва Символ операції
  • 23. Двійкові коди цілих чисел 2 147 483 647 2 147 483 648 чи - 2 147 483 648 0 4 294 967 295 чи - 1 00000000 00000000 00000000 0 0000000 11111111 11111111 11111111 0 1111111 00000000 00000000 00000000 1 0000000 11111111 11111111 11111111 1 1111111
  • 24. Шістнадцяткові коди цілих чисел 2 147 483 647 2 147 483 648 0 4 294 967 295 0 0 0 0 0 0 0 0 F F F F F F 7 F 0 0 0 0 0 0 8 0 F F F F F F F F
  • 25. Логічні побітові операції op1 | op2 Диз’юнкція | op1 ^ op2 Виключна диз’юнкція ^ op1 & op2 Кон’юнкція & op1 >> op2 Зсування вправо >> op1 << op2 Зсування вліво << ~ op Заперечення ~ Спосіб використання Назва Символ операції
  • 26. Логічні побітові операції
    • Програмування на низькому, близькому до машинного, рівні: найпростіше ці операції вживати до типу unsigned int або unsigned long (int) , що відповідатиме роботі з машинними словами.
    • У випадку коротших типів або при наявності знаку результат може залежати від типу компілятора.
  • 27. Логічні побітові операції
    • Приклад
    • unsigned int a = 42276613 1 0 ; // fbfcfdfe
    • int k = 0;
    • cout << (a>>k)&0xff <<endl; // fb fcfd fe
    • k = 8;
    • cout << (a>>k)&0xff <<endl; // 00 fbfc fd
    • k =16;
    • cout << (a>>k)&0xff <<endl; // 0000 fb fc
    • k =24;
    • cout << (a>>k)&0xff <<endl; // 000000 fb