О курсе
В этом курсе мы разберём способы представления информации в памяти компьютера, точнее, подходы и договорённости, лежащие в основе.
Программисты на языках высокого уровня постоянно имеют дело с переменными — языковыми абстракциями, предназначенными для хранения значений разных типов и даже сложных структур данных. Многие пользуются ими, часто даже не задумываясь, на автомате. До некоторой степени можно удовлетвориться поверхностным пониманием происходящего, собственно, именно для этого и нужны языки высокого уровня.
В какой-то момент, когда вы приближаетесь к границам этой удобной реальности, вы начинаете сталкиваться со странностями разного рода и понимаете, что не всё так просто в этой жизни. Все знают, что 2 + 2 = 4. Но почему же тогда 0.2 + 0.2 ≠ 0.4? Для чисел одинарной точности первые 20 знаков после десятичной точки выглядят так: 0.40000000596046447754. Куда рушатся законы математики? И, главное, почему? Будем это выяснять и избегать ошибок, с этим связанных.
Курс состоит из нескольких модулей. Во вводном модуле мы изучим или вспомним позиционные системы счисления, алгоритмы записи чисел в них и перевода из системы в систему. Это потребуется нам в дальнейшем, потому что компьютеры ("вычислители") в глубине своей оперируют только числами и только в двоичной системе.
Во втором и третьем модуле мы изучим несколько способов хранения целых и дробных чисел. Некоторые из них реализованы аппаратно в современных компьютерах, другие более экзотические, но тем не менее где-то могут использоваться, программно или аппаратно.
Завершающий модуль демонстрирует подход к хранению нечисловых категориальных данных в компьютере, к которым относятся и буквы этого текста. Хотелось бы вложить в этот курс ещё больше полезной информации, но пока приходится ограничиться основами, а все усложнения оставить на продолжение.
Курс подготовлен на базе программы направления "Прикладная математика и информатика" СПбПУ Петра Великого.
Для кого этот курс
Начальные требования
Для прохождения курса достаточно желания его пройти и математического склада ума. Курс рассчитан на слушателей, хотя бы немного знакомых с программированием, но при этом не требует от них специальных знаний и навыков, не содежит задач на программирование.