Your SlideShare is downloading. ×
0
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
02 Arithmetic Data Types
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

02 Arithmetic Data Types

553

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
553
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
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

×