🗊Презентация Операции в языке С (продолжение)

Нажмите для полного просмотра!
Операции в языке С (продолжение), слайд №1Операции в языке С (продолжение), слайд №2Операции в языке С (продолжение), слайд №3Операции в языке С (продолжение), слайд №4Операции в языке С (продолжение), слайд №5Операции в языке С (продолжение), слайд №6Операции в языке С (продолжение), слайд №7Операции в языке С (продолжение), слайд №8Операции в языке С (продолжение), слайд №9Операции в языке С (продолжение), слайд №10Операции в языке С (продолжение), слайд №11Операции в языке С (продолжение), слайд №12Операции в языке С (продолжение), слайд №13Операции в языке С (продолжение), слайд №14Операции в языке С (продолжение), слайд №15Операции в языке С (продолжение), слайд №16Операции в языке С (продолжение), слайд №17Операции в языке С (продолжение), слайд №18Операции в языке С (продолжение), слайд №19Операции в языке С (продолжение), слайд №20Операции в языке С (продолжение), слайд №21Операции в языке С (продолжение), слайд №22Операции в языке С (продолжение), слайд №23Операции в языке С (продолжение), слайд №24Операции в языке С (продолжение), слайд №25Операции в языке С (продолжение), слайд №26Операции в языке С (продолжение), слайд №27Операции в языке С (продолжение), слайд №28Операции в языке С (продолжение), слайд №29Операции в языке С (продолжение), слайд №30Операции в языке С (продолжение), слайд №31Операции в языке С (продолжение), слайд №32Операции в языке С (продолжение), слайд №33Операции в языке С (продолжение), слайд №34Операции в языке С (продолжение), слайд №35Операции в языке С (продолжение), слайд №36Операции в языке С (продолжение), слайд №37Операции в языке С (продолжение), слайд №38

Содержание

Вы можете ознакомиться и скачать презентацию на тему Операции в языке С (продолжение). Доклад-сообщение содержит 38 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Есть ли у вас вопросы?
Описание слайда:
Есть ли у вас вопросы?

Слайд 2





Краткое содержание предыдущей серии
Как в ассемблере происходит сравнение?
Как используется результат сравнения?
Что такое «условное исполнение»?
Как в ассемблере осуществляется ветвление?
Описание слайда:
Краткое содержание предыдущей серии Как в ассемблере происходит сравнение? Как используется результат сравнения? Что такое «условное исполнение»? Как в ассемблере осуществляется ветвление?

Слайд 3





Краткое содержание этой серии
О магии
Операции в языке С (продолжение)
О-нотация
Описание слайда:
Краткое содержание этой серии О магии Операции в языке С (продолжение) О-нотация

Слайд 4





Что такое «магия»?
В широком смысле – это «что-то непонятное». 
Строгой классификации не существует.
Условно:
белая магия – результат действия полностью понятен, но не понятен механизм
черная магия – результат действия понятен не полностью или вообще ничего непонятно
Описание слайда:
Что такое «магия»? В широком смысле – это «что-то непонятное». Строгой классификации не существует. Условно: белая магия – результат действия полностью понятен, но не понятен механизм черная магия – результат действия понятен не полностью или вообще ничего непонятно

Слайд 5





Пример «белой магии»
Функция sin. Что возвращает sin? 
Синус угла.
А как она его вычисляет? 
Правильно.
Если вас устраивает результат «белой магии» (точность, скорость и т.д.), то понимать ее механизм не обязательно.
Описание слайда:
Пример «белой магии» Функция sin. Что возвращает sin? Синус угла. А как она его вычисляет? Правильно. Если вас устраивает результат «белой магии» (точность, скорость и т.д.), то понимать ее механизм не обязательно.

Слайд 6





Пример «черной магии»
Описание слайда:
Пример «черной магии»

Слайд 7





Причины «магии»
«Индуизм»
Ручная оптимизация
Магические числа
Обфускация (намеренное ухудшение читаемости кода)
Недокументированные и малоизвестные особенности чего-либо
Соревнования волшебников
Описание слайда:
Причины «магии» «Индуизм» Ручная оптимизация Магические числа Обфускация (намеренное ухудшение читаемости кода) Недокументированные и малоизвестные особенности чего-либо Соревнования волшебников

Слайд 8





«Индуизм» («индусский код»)
Описание слайда:
«Индуизм» («индусский код»)

Слайд 9





«Магические числа»
Это численные константы, смысл которых не ясен.
Описание слайда:
«Магические числа» Это численные константы, смысл которых не ясен.

Слайд 10





Как сделать черную магию белой?
// Быстрый вариант функции 1/sqrt. 
// Быстр при аппаратной поддержке плавающей арифметики
float fastInverseSqrt( float number )
{
	long i;
	float x2, y;
	const float threehalfs = 1.5F;
 
	x2 = number * 0.5F;
	y  = number;
	i  = * ( long * ) &y;                       
	i  = 0x5f3759df - ( i >> 1 );             
	y  = * ( float * ) &i;
	y  = y * ( threehalfs - ( x2 * y * y ) );   
 
	return y;
}
Описание слайда:
Как сделать черную магию белой? // Быстрый вариант функции 1/sqrt. // Быстр при аппаратной поддержке плавающей арифметики float fastInverseSqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; i = 0x5f3759df - ( i >> 1 ); y = * ( float * ) &i; y = y * ( threehalfs - ( x2 * y * y ) ); return y; }

Слайд 11





Что такое интерфейс?
Интерфейс – набор входов и выходов черного ящика; их свойства, возможные диапазоны и т.д.
В зависимости от области интерфейс может быть разным.
Описание слайда:
Что такое интерфейс? Интерфейс – набор входов и выходов черного ящика; их свойства, возможные диапазоны и т.д. В зависимости от области интерфейс может быть разным.

Слайд 12





Интерфейсы
Описание слайда:
Интерфейсы

Слайд 13





Хороший интерфейс делает черную магию белой!
Хороший интерфейс делает черную магию белой!
Описание слайда:
Хороший интерфейс делает черную магию белой! Хороший интерфейс делает черную магию белой!

Слайд 14





Операции в языке С (продолжение)
Логические
Битовые
Описание слайда:
Операции в языке С (продолжение) Логические Битовые

Слайд 15





Логические операции
! – логическое отрицание
&& - логическое И
|| - логическое ИЛИ
Т.к. тип bool был введен только в С99, все логические операции используют тип int.
Поэтому для них 0 – это ложь, а любое другое число – истина.
Описание слайда:
Логические операции ! – логическое отрицание && - логическое И || - логическое ИЛИ Т.к. тип bool был введен только в С99, все логические операции используют тип int. Поэтому для них 0 – это ложь, а любое другое число – истина.

Слайд 16





Логическое отрицание - !
Описание слайда:
Логическое отрицание - !

Слайд 17





Логическое ИЛИ - ||
Результат выражения А || B равен нулю, только если оба аргумента равны нулю, во всех остальных случаях результат равен единице.
Описание слайда:
Логическое ИЛИ - || Результат выражения А || B равен нулю, только если оба аргумента равны нулю, во всех остальных случаях результат равен единице.

Слайд 18





Логическое И - &&
Результат выражения А && B равен единице, только если оба аргумента не равны нулю, во всех остальных случаях результат равен нулю.
Описание слайда:
Логическое И - && Результат выражения А && B равен единице, только если оба аргумента не равны нулю, во всех остальных случаях результат равен нулю.

Слайд 19





Логические операции в ассемблере
Их нет! Есть только битовые.
Все операции, которые называются «logical» в тех. описании, являются битовыми.
Логические операции языка С превращаются в несколько ассемблерных команд.
Описание слайда:
Логические операции в ассемблере Их нет! Есть только битовые. Все операции, которые называются «logical» в тех. описании, являются битовыми. Логические операции языка С превращаются в несколько ассемблерных команд.

Слайд 20





Битовые операции языка С
~ - битовая инверсия
| - битовое ИЛИ
& - битовое И
^ - битовое исключающее или (XOR)
>> - сдвиг вправо
<< - сдвиг влево
Все битовые операции выполняются над двоичными представлениями чисел. 
В языке С битовые операции определены только для целых чисел!
Описание слайда:
Битовые операции языка С ~ - битовая инверсия | - битовое ИЛИ & - битовое И ^ - битовое исключающее или (XOR) >> - сдвиг вправо << - сдвиг влево Все битовые операции выполняются над двоичными представлениями чисел. В языке С битовые операции определены только для целых чисел!

Слайд 21





Битовая инверсия - ~
При битовой инверсии каждый бит двоичного представления аргумента меняется на противоположный (инвертируется).  
Размер (в байтах) результата операции равен размеру аргумента, поэтому результат зависит от типа!
Примеры:
uint8_t A = 5; //   A = 0000 01012 = 510
A = ~A;        //   A = 1111 10102 = 25010
uint16_t B = 5; // B = 0000 0000 0000 01012 = 510
B = ~B;         // B = 1111 1111 1111 10102 = 6553010
Описание слайда:
Битовая инверсия - ~ При битовой инверсии каждый бит двоичного представления аргумента меняется на противоположный (инвертируется). Размер (в байтах) результата операции равен размеру аргумента, поэтому результат зависит от типа! Примеры: uint8_t A = 5; // A = 0000 01012 = 510 A = ~A; // A = 1111 10102 = 25010 uint16_t B = 5; // B = 0000 0000 0000 01012 = 510 B = ~B; // B = 1111 1111 1111 10102 = 6553010

Слайд 22





Битовое ИЛИ - |
Результатом битового ИЛИ будет число, каждый бит которого является результатом булевой операции ИЛИ между соответствующими битами аргументов. 
Коротко: если бит равен 1 в любом из аргументов – он равен 1 в результате.
A |= B эквивалентно A = A | B. 
Битовое ИЛИ удобно использовать для установки отдельных битов в единицу:  a |= 1;
Описание слайда:
Битовое ИЛИ - | Результатом битового ИЛИ будет число, каждый бит которого является результатом булевой операции ИЛИ между соответствующими битами аргументов. Коротко: если бит равен 1 в любом из аргументов – он равен 1 в результате. A |= B эквивалентно A = A | B. Битовое ИЛИ удобно использовать для установки отдельных битов в единицу: a |= 1;

Слайд 23





Битовое И - &
Результатом битового И будет число, каждый бит которого является результатом булевой операции И между соответствующими битами аргументов. 
Коротко: если бит равен 0 в любом из аргументов – он равен 0 в результате.
A &= B эквивалентно A = A & B.
Битовое И удобно использовать для обнуления отдельных битов:
a &= ~1;
Описание слайда:
Битовое И - & Результатом битового И будет число, каждый бит которого является результатом булевой операции И между соответствующими битами аргументов. Коротко: если бит равен 0 в любом из аргументов – он равен 0 в результате. A &= B эквивалентно A = A & B. Битовое И удобно использовать для обнуления отдельных битов: a &= ~1;

Слайд 24





Битовое исключающее ИЛИ (XOR) - ^
Если значение одного бита у аргументов разное – то результат равен 1.
A ^= B эквивалентно A = A ^ B.
Битовое исключающее ИЛИ удобно использовать для инверсии отдельных битов:
a ^= 1;
Описание слайда:
Битовое исключающее ИЛИ (XOR) - ^ Если значение одного бита у аргументов разное – то результат равен 1. A ^= B эквивалентно A = A ^ B. Битовое исключающее ИЛИ удобно использовать для инверсии отдельных битов: a ^= 1;

Слайд 25


Операции в языке С (продолжение), слайд №25
Описание слайда:

Слайд 26





Сдвиги
Сдвиги бывают:
«просто» сдвиги – они же «логические» (без учета знака)
арифметические (с учетом знака)
циклические
Какие же сдвиги в языке С?
Не циклические.
Описание слайда:
Сдвиги Сдвиги бывают: «просто» сдвиги – они же «логические» (без учета знака) арифметические (с учетом знака) циклические Какие же сдвиги в языке С? Не циклические.

Слайд 27





Сдвиг влево - <<
A << B эквивалентно
Пустые биты справа заполняются нулями
a <<= 3 эквивалентно a = a << 3
Сюрпризы:
Сдвиг на отрицательное число – undefined behavior
Сдвиг отрицательного числа влево (начиная со стандартов С99 и С++11) – undefined behavior
Если сдвигается положительное знаковое число, то результат сдвига должен помещаться в переменную-приемник, иначе – undefined behavior.
Описание слайда:
Сдвиг влево - << A << B эквивалентно Пустые биты справа заполняются нулями a <<= 3 эквивалентно a = a << 3 Сюрпризы: Сдвиг на отрицательное число – undefined behavior Сдвиг отрицательного числа влево (начиная со стандартов С99 и С++11) – undefined behavior Если сдвигается положительное знаковое число, то результат сдвига должен помещаться в переменную-приемник, иначе – undefined behavior.

Слайд 28





Сдвиг вправо - >>
A >> B эквивалентно
a >>= 4 эквивалентно а = а >> 4
Сюрпризы:
Сдвиг вправо отрицательных чисел – implementation defined
Сдвиг на отрицательное число – undefined behavior
Поэтому сдвиг вправо вроде бы арифметический, но вроде бы и нет.
Описание слайда:
Сдвиг вправо - >> A >> B эквивалентно a >>= 4 эквивалентно а = а >> 4 Сюрпризы: Сдвиг вправо отрицательных чисел – implementation defined Сдвиг на отрицательное число – undefined behavior Поэтому сдвиг вправо вроде бы арифметический, но вроде бы и нет.

Слайд 29





Примеры сюрпризов
int a = -1 << 1;    - undefined behaviour
int a = 1 << 100;   - undefined behaviour
int a = 1 << -2;    - undefined behaviour
int a = 1 >> -3;    - undefined behaviour
int a = -1 >> 4;    - implementation defined
Описание слайда:
Примеры сюрпризов int a = -1 << 1; - undefined behaviour int a = 1 << 100; - undefined behaviour int a = 1 << -2; - undefined behaviour int a = 1 >> -3; - undefined behaviour int a = -1 >> 4; - implementation defined

Слайд 30





Сюрприз в сюрпризе
Описания сдвигов отрицательных чисел появились в стандарте слишком поздно.
Программисты успели написать достаточно кода, где такие сдвиги используются!
Зачем?
Для получения битовых масок с заданным числом нулей удобно сдвигать -1 (если он в доп. коде)
Но так делать не надо! Сдвигайте лучше ~0u
Описание слайда:
Сюрприз в сюрпризе Описания сдвигов отрицательных чисел появились в стандарте слишком поздно. Программисты успели написать достаточно кода, где такие сдвиги используются! Зачем? Для получения битовых масок с заданным числом нулей удобно сдвигать -1 (если он в доп. коде) Но так делать не надо! Сдвигайте лучше ~0u

Слайд 31





Рассмотрим два алгоритма сортировки
Описание слайда:
Рассмотрим два алгоритма сортировки

Слайд 32





Какой из них быстрее?
А если взять другой массив?
А если взять другой компьютер?
А если массив будет гораздо, гораздо больше?
Описание слайда:
Какой из них быстрее? А если взять другой массив? А если взять другой компьютер? А если массив будет гораздо, гораздо больше?

Слайд 33





Как узнать, какой алгоритм быстрее?
Написать программу и запустить?
но ее можно написать с ошибками
на разных компьютерах скорость будет разной
на разных исходных данных скорость будет разной
на разных запусках скорость может быть разной!
Описание слайда:
Как узнать, какой алгоритм быстрее? Написать программу и запустить? но ее можно написать с ошибками на разных компьютерах скорость будет разной на разных исходных данных скорость будет разной на разных запусках скорость может быть разной!

Слайд 34





Теоретический анализ?
Какая самая долгая операция в алгоритме?
Какая операция выполняется наибольшее количество раз?
От чего зависит это количество?
Описание слайда:
Теоретический анализ? Какая самая долгая операция в алгоритме? Какая операция выполняется наибольшее количество раз? От чего зависит это количество?

Слайд 35





Теоретический анализ?
Описание слайда:
Теоретический анализ?

Слайд 36





Теоретический анализ?
Описание слайда:
Теоретический анализ?

Слайд 37





Теоретический анализ?
Абстрагироваться от «железа»
Абстрагироваться от входных данных
Получается т.н. «О-нотация» (Big-Oh notation):
Время работы алгоритма выражается как функция от размера входных данных N
Игнорируются константные коэффициенты
Остается только старший порядок
Очень грубое объяснение! Подробнее см. «алгоритмическая сложность», «теория алгоритмов»
Описание слайда:
Теоретический анализ? Абстрагироваться от «железа» Абстрагироваться от входных данных Получается т.н. «О-нотация» (Big-Oh notation): Время работы алгоритма выражается как функция от размера входных данных N Игнорируются константные коэффициенты Остается только старший порядок Очень грубое объяснение! Подробнее см. «алгоритмическая сложность», «теория алгоритмов»

Слайд 38





А можно сортировать быстрее?
Если ничего не известно о входных данных
Быстрая сортировка – в среднем 
Сортировка слиянием - 
Если известно
Поразрядная сортировка () )
Сортировка подсчетом ())
Описание слайда:
А можно сортировать быстрее? Если ничего не известно о входных данных Быстрая сортировка – в среднем Сортировка слиянием - Если известно Поразрядная сортировка () ) Сортировка подсчетом ())



Похожие презентации
Mypresentation.ru
Загрузить презентацию