Найти тему
Программирование. Паттерн проектирования: Стратегия (Strategy)
Всем привет! В данной статье рассмотрим популярный шаблон проектирования: "Стратегия". Данный шаблон проектирования (далее паттерн), известный еще как паттерн Политика (pattern Policy) . Стратегия относится к группе паттернов поведения (Как правило, паттерны поведения описывают способы коммуникации между объектами, они реализуют сложные алгоритмы управления, которые обычно трудно отследить во время выполнения программы). Паттерн Стратегия позволяет инкапсулировать (выделить в отдельные сущности...
7 месяцев назад
Всем привет! Что же такое переполнение? (Не... Мы не о солидных любителях по трапезничать, хотя пару кг хотелось бы скинуть конечно...) И так... погнали! Кампутерная память хранит разную инфу (прон например), и эта самая инфа, как правило, представлена цифрами (цифры образуют числа, которые для машины являются словами - командами (гав, гав)). Перейдем сразу к десерту. Для нашей помойки рассмотрим int - он же integer, он же целое. Причем есть unsigned integer - беззнаковое целое и чтобы два раза не вставать - signed integer - число со знаком. Далее ... любое целое число в двоичном виде, как правило, занимает 32 бита, т.е. например цифра 7 будет выглядеть следующим образом: 0000 0000 0000 0000 0000 0000 0000 0111. Для операционной системы - все эти 32 бита (дырки, палки) - одно число. Максимальное значение, которое можно записать в такое число - это 2 в 32 степени (2 - потому, что только два значения 0 и 1), (32 - ячейки памяти, то самое количество битов). Вроде для без знаковых чисел все понятно... просто забиваем все по мере надобности, т.е. самое большое число без знаковое - это когда всё в единицах. И так вот, допустим у нас есть число 1111 1111 1111 1111 1111 1111 1111 1111, что же будет если к нему прибавить, например 1? Вот тут и произойдет ПЕРЕПОЛНЕНИНЕ - единится сложиться с максимальным числом и появится ... 0000 0000 0000 0000 0000 0000 0000 0000.... мир нулей ... хотя все зависит от того сколько прибавят. С отрицательными числами тоже самое. Если мы рассматриваем область памяти, как число со знаком, то самый старший (левый бит) этого числа будет отвечать за знак. Для наглядности сократим количество нулей... И так, в новом случае 0010 - это два, 0111 - семь, а 1000 - уже минус 8. 1001 - это минус семь... Вплоть до 1111 - это минус один (не путать со скандинавским богом(в нашем случае - багом) Одином). И что же произойдет когда из -8 мы вычтем 1 ? 1000 - 1 = 0111. Получим 7. Т.е. переполнение - это когда полученное число не влезает в память, выделенную под него и начинает чудить - отбрасывать старшие цифры, которые не влезли. Опасная вещь... Засим прощаюсь! До новых встреч!
10 месяцев назад
Почему в стандарте ASCII всего 256 символов? Ответ: ASCII (American Standard Code for Information Interchange) – американский стандартный код обмена информацией. Грубо говоря ASCII - это электронная кодировка информации, как правило текста. Термин "кодировка" в свою очередь, обозначает то, что каждому элементу данной кодировки (букве алфавита и прочим символам, таким как точка, пробел или восклицательный знак и т.д.) соответствует определенный цифровой код. Давайте рассмотрим ASCII по подробнее: В данной кодировке каждый символ занимает 1 байт. (Например: слово "Ok" - буде занимать 2 байта.) Каждый байт - это 8 бит. Бит - обозначает "двоичный". В нашем случае 1 бит - может принимать два значения - 0 (напряжение снято) или 1 (напряжение подано). 8 бит - это, например bbbb bbbb, где каждое значение b - может быть как 0, так и 1 (но не 0 и 1 одновременно). (Например: 0000 1110 или 0101 1101). Как говорилось выше, каждому символу ASCII соответствует свой байт (свои уникальные 8 бит). (Например: цифра 0 (текстовый символ цифры) представлен в данной кодировке как 00110000 (или 48 в десятичной системе отсчета)). (Например: буква A представлена как 01000001 (или 65 в десятичной системе отсчета)). Если посчитать все возможное количество двоичных комбинаций из 8 бит, тогда и получим 2 * 2 * 2 * 2 *2 * 2 * 2 * 2 => 2^8 = 256 комбинаций. ------------------------------------------------------------------------------------------------------------------------------------------ Подписывайте на телеграмм канал
1 год назад