План урока, примерно 3 часа:
- Разминка: 15 мин
- Теория 1 «Почему только 0 и 1»: 40 мин
- Игра 1 «Включи свет»: 15 мин
- Теория 2 «Как считать в двоичном коде»: 40 мин
- Игра 2 «Прочитай код»: 15 мин
- Теория 3 «Байты, буквы и гигабайты»: 30 мин
- Босс «Повелитель байтов»: 15 мин
- Дома и пароль: 10 мин
На сайте учеников каждый следующий блок теории открывается только после того, как класс прошёл предыдущую игру. Технически это работает на каждом телефоне отдельно: блок открывается у того, кто выиграл игру, а пароль в конце урока открывает всё сразу. Поэтому порядок менять нельзя: если перескочить игру, у ребят на телефонах просто не откроется следующий текст. Перерыв удобно делать после Игры 1 или после Игры 2, когда все и так встают и шумят.
Текста здесь заметно больше, чем влезет в три часа. Это нарочно. Читайте то, что зашло классу, а остальное пропускайте. Всё, что спрашивают игры, отмечено в тексте явно, это пропускать нельзя. Блоки «Для старших» можно рассказывать всем, если младшие держатся, или только тем, кто спросит.
Что взять с собой: маркеры для доски, 8 листов бумаги А4 с крупными числами 128, 64, 32, 16, 8, 4, 2, 1 (для игры «живой байт»), любой старый процессор, планку оперативной памяти, старую материнскую плату (лучше с перемычками или DIP-переключателями), флешку, по возможности старый жёсткий диск. Если найдётся дискета или старый кнопочный телефон, тоже берите: дети от них в восторге.
Разминка: мем про 10 типов людей
Как начать
Привет, айтишники! Садимся, достаём телефоны, открываем сайт курса, урок номер два. Да, сегодня телефоны можно, они нам нужны. Но только сайт курса. Кто сейчас полезет в TikTok, тот будет отвечать у доски за всех.
Сегодня у нас очень важный урок. Может быть, самый важный во всём первом месяце. Сегодня мы выучим язык, на котором разговаривает любой компьютер. Ваш телефон, ноутбук, игровая приставка, банкомат, умные часы, даже стиральная машина у бабушки, если она современная. Все они говорят на одном языке. И в этом языке всего две буквы.
Угадайте какие? Не говорите вслух, просто подумайте. К концу разминки проверим.
Вспоминаем прошлый урок
Сначала вспомним, что было на прошлой неделе. Мы с вами открывали компьютер и смотрели, из чего он сделан. Помните, я приносил железки и мы передавали их по кругу? Давайте проверим, кто что запомнил.
Какая деталь компьютера считается его «мозгом»?
Ожидаемый ответ: процессор. Если скажут «видеокарта» или «материнская плата», не ругайте, а уточните: видеокарта тоже думает, но только про картинку, а плата соединяет всех вместе, как улицы в городе.
Чем оперативная память отличается от жёсткого диска или SSD?
Ожидаемый ответ: оперативная память быстрая, но забывает всё, когда выключаешь компьютер. Диск медленнее, зато помнит всё и после выключения. Аналогия с прошлого урока: оперативка это рабочий стол, диск это шкаф.
Зачем компьютеру блок питания? Почему нельзя воткнуть плату сразу в розетку?
Ожидаемый ответ: в розетке 220 вольт переменного тока, а деталям нужно маленькое постоянное напряжение, например 12, 5 и 3,3 вольта. Блок питания переделывает одно в другое.
Как называется большая плата, к которой подключается всё остальное?
Ожидаемый ответ: материнская плата.
Отлично. Запомните вот что. На прошлом уроке мы смотрели на компьютер снаружи и видели железки. А сегодня мы залезем внутрь этих железок и посмотрим, что там бегает по проводам. Что именно процессор «думает», что хранит оперативка, что лежит на диске. Спойлер: везде одно и то же. Нули и единицы.
А на следующем уроке мы вернёмся к процессору и памяти уже по-взрослому и поймём, как они этими нулями и единицами работают. Так что сегодняшний урок это фундамент. Без него дальше будет непонятно, а с ним всё сложится.
Мем недели
Теперь смотрим на экран. Кто-нибудь прочитает вслух?
«Существует 10 типов людей: те, кто понимает двоичный код, и те, кто нет». Так. Кому смешно? Поднимите руки. Ага, вот двое. А остальным? Нормально, если не смешно. На сайте прямо так и написано: «Не смешно? К концу урока будет». Это моё обещание вам. Сегодня в конце урока каждый из вас поймёт эту шутку и будет её рассказывать дома, и родители не поймут, а вы будете смотреть на них свысока.
Но давайте сначала подумаем. Тут написано «10 типов». А дальше перечислено сколько? Считаем: «те, кто понимает», раз. «И те, кто нет», два. Два типа. А написано десять. Что-то не сходится, да? Вот в этом и шутка. Кто уже понял, тсс, не подсказывайте. Пусть остальные помучаются.
Как вы думаете, почему в шутке написано «10», а людей всего два типа? Есть идеи?
Ожидаемый ответ: младшие обычно говорят «ошибка», «опечатка», «автор не умеет считать». Кто-то из старших может сказать «потому что в двоичном 10 это 2». Похвалите, но попросите пока не объяснять подробно: «Ты прав, но давай остальные дойдут сами через час».
Запишем нашу загадку на доску и вернёмся к ней через час. Это будет наш детектив на весь урок.
10 = ? и не стирайте до конца Теории 2. В конце Теории 2 вы вернётесь к этой надписи и допишете ответ.Как объяснять мем, если спросят прямо сейчас
Если кто-то не выдерживает и требует ответа прямо сейчас, можно дать подсказку, но не сам ответ. Например так.
Ребята, вот вам подсказка. Число «десять», которое вы знаете, на самом деле записано в особой системе. Мы пишем числа десятью цифрами: от 0 до 9. Когда цифры заканчиваются, мы пишем «1» и «0» и получаем десять. А если бы у нас было всего две цифры, 0 и 1? Тогда цифры закончились бы очень быстро. Ноль, один, а дальше? Дальше пришлось бы уже писать «10». Подумайте над этим. Через час разберём по-настоящему.
Что вы уже знаете про двоичный код
Прежде чем начать, давайте проверим, что вы уже слышали. Где вы видели нули и единицы? В кино, в играх, в мемах?
Где вы встречали нули и единицы, кроме уроков математики?
Ожидаемый ответ: «Матрица» с зелёными цифрами, хакеры в фильмах, заставки на YouTube, кнопка питания на компьютере. Кнопка питания особенно хороша: её значок это палочка внутри кружка, то есть 1 и 0, «включено» и «выключено». Покажите этот значок на любом устройстве в классе.
Смотрите на кнопку включения компьютера. Видите значок? Кружочек и палочка. Это не просто красивая картинка. Палочка это единица, кружок это ноль. Включено и выключено. Значок на кнопке питания это и есть один бит. А на блоке питания, который мы смотрели на прошлом уроке, сзади есть переключатель, и на нём прямо написано «I» и «O». Так что двоичный код вы видели каждый день, просто не знали.
Короткая разминка для мозга
Пока мы ждём опоздавших, у меня для вас задачка. Представьте, что вы с другом сидите в разных домах напротив друг друга. Ночь. Телефонов нет, интернета нет, кричать нельзя, все спят. У каждого из вас есть только фонарик. Он умеет только две вещи: светить и не светить. Как договориться заранее, чтобы передать другу сообщение «завтра идём в кино» или «завтра не идём»?
Как передать сообщение одним фонариком?
Ожидаемый ответ: договориться заранее, что «свет горит» значит «идём», а «не горит» значит «не идём». Или мигать: одно мигание «да», два мигания «нет». Хвалите любые идеи, главное, чтобы прозвучало слово «договориться».
Видите, главное здесь слово «договориться». Фонарик сам ничего не знает. Он просто светит или не светит. А смысл в это вкладываете вы, когда заранее договорились. Запомните это. Компьютер работает точно так же. Внутри у него только «есть ток» и «нет тока». А что это значит, буква, цифра, цвет пикселя или звук, люди договорились заранее. И сегодня мы узнаем, как именно договорились.
А теперь усложним. Что если нужно передать не «да или нет», а одно из четырёх сообщений: «идём в кино», «идём в парк», «идём в магазин», «сидим дома»? Одного фонарика уже мало. А если у каждого из вас по два фонарика? Подумайте, это мы как раз разберём в первой теории.
Ну что, все пришли? Тогда поехали. Ответ на мой первый вопрос, про две буквы компьютерного языка, вы уже, наверное, догадались: это 0 и 1. Сейчас разберёмся, почему именно они.
Теория 1. Почему только 0 и 1
Что на самом деле внутри процессора
Итак. Возьмём процессор. Вот он, настоящий, я его принёс.
Смотрите на него внимательно. Маленький квадратик, примерно как печенье. Сверху металлическая крышка, снизу много-много контактов. Как вы думаете, что внутри? Если бы мы его разрезали и посмотрели в самый сильный микроскоп, что бы мы там увидели?
Что внутри процессора? Что там можно увидеть, если разрезать?
Ожидаемый ответ: дети говорят «микросхемы», «провода», «цифры», «код». Ответ «цифры» особенно хорош, потому что сейчас вы его опровергнете.
Многие думают, что внутри процессора бегают цифры. Как в фильме «Матрица», где по экрану сыплются зелёные символы. Или что там внутри маленькие буквы и картинки. Так вот, ничего подобного. Внутри процессора нет ни одной цифры. Нет букв, нет картинок, нет музыки, нет видео с YouTube. Ничего этого там нет.
А что есть? Есть миллиарды крошечных выключателей. Они называются транзисторы. Запишите это слово, оно будет с нами весь курс. Транзистор.
Что умеет обычный выключатель у вас дома на стене? Он умеет две вещи. Либо свет горит, либо не горит. Третьего не дано. Нельзя включить выключатель «немножко». Ну, если у вас не диммер, но про диммер забудем. Обычный выключатель: вкл или выкл.
Транзистор делает то же самое, только с током внутри процессора. Он либо пропускает ток дальше, либо не пропускает. Всё. Больше он ничего не умеет. Никакой магии. Просто очень-очень маленький выключатель, который щёлкает очень-очень быстро.
Отличие от выключателя на стене только в двух вещах. Первое: транзистором никто не щёлкает пальцем. Его включает и выключает другой ток. То есть один транзистор может управлять другим, тот третьим, и так далее. Получаются цепочки. Второе: он невероятно маленький и невероятно быстрый.
Насколько они маленькие и сколько их
Насколько маленький? Смотрите. Ваш волос толщиной примерно одна десятая миллиметра. Современный транзистор в тысячи раз меньше толщины волоса. Если положить волос поперёк процессора, под ним поместятся тысячи транзисторов в ряд. Их нельзя увидеть даже в обычный школьный микроскоп. Только в специальный электронный.
А сколько их? В первом в мире микропроцессоре, который сделала компания Intel в 1971 году, транзисторов было примерно 2300. Две тысячи триста. Это много или мало? Ну, представьте спортзал школы, и в нём стоят 2300 человек. Много. А теперь в процессоре вашего телефона, который у вас сейчас в кармане, транзисторов примерно двадцать миллиардов. Двадцать миллиардов! Это больше, чем людей на всей Земле, примерно в два с половиной раза. И всё это в кусочке кремния размером с ноготь.
Людей на Земле примерно 8 миллиардов. Если каждому человеку дать по одному транзистору из вашего телефона, хватит на всех?
Ожидаемый ответ: хватит, и ещё останется. Каждому достанется больше двух.
И каждый из этих двадцати миллиардов выключателей щёлкает миллиарды раз в секунду. Когда вы видите в характеристиках телефона или компьютера «3 гигагерца», это значит, грубо говоря, что процессор делает три миллиарда тактов в секунду. Три миллиарда раз за одну секунду. Пока вы моргнули, ваш телефон уже сделал сотни миллионов шагов.
Для старших: как транзистор работает на самом деле
Транзистор в процессоре называется полевой, или МОП-транзистор. У него три вывода: исток, сток и затвор. Ток хочет течь от истока к стоку, но между ними слой кремния, который в обычном состоянии ток почти не проводит. Если подать небольшое напряжение на затвор, под ним возникает электрическое поле, и в кремнии образуется проводящий «канал». Ток побежал. Убрали напряжение с затвора, канал исчез, ток прекратился.
Затвор отделён от кремния тончайшим слоем изолятора, поэтому ток через сам затвор почти не идёт. Важно вот что: выход одного транзистора можно подать на затвор другого. Так один транзистор управляет другим, и из них собирают логические элементы: «И», «ИЛИ», «НЕ». А из логических элементов собирают сумматоры, память и вообще весь процессор.
Когда в новостях пишут «техпроцесс 3 нанометра», это уже скорее маркетинговое название поколения технологии, а не точный размер какой-то детали транзистора. Но транзисторы правда очень маленькие: их размеры измеряются десятками нанометров, а это в тысячи раз меньше волоса.
Как из «ток есть» получилась единица
Хорошо. Внутри выключатели. Ток есть или тока нет. Но мы-то с вами видим на экране буквы, цифры, видео. Откуда они берутся?
Помните задачку с фонариком? Главное слово было «договориться». Вот люди, которые придумывали компьютеры, договорились так. Если ток есть, это единица. Если тока нет, это ноль. Вот и всё. 1 и 0.
То есть 0 и 1 это не что-то, что лежит внутри компьютера. Это просто названия, которые мы дали двум состояниям выключателя. Могли бы назвать «да» и «нет». Могли бы «вкл» и «выкл». Могли бы «котик спит» и «котик не спит». Но математикам удобнее 0 и 1, потому что с ними можно считать, это мы увидим во второй теории.
Кстати, наш Бит прямо так и говорит. Посмотрите на телефоне, у вас в Теории 1 есть его реплика.
Вот. Бит Байт, наш кот из Памятьвиля, умеет только два состояния. Сплю и ем. У кого дома есть кот, подтвердите: это правда? Ну, иногда ещё бегает в три часа ночи по квартире, но будем считать, что это разновидность «ем».
Что такое бит
Один такой выключатель, который хранит одно «да или нет», называется бит. Это самая маленькая порция информации, какая вообще бывает. Меньше бита не бывает. Нельзя хранить «половину да». Бит это атом информации.
Слово «бит» придумали в 1940-х годах. Оно получилось из английских слов binary digit, что значит «двоичная цифра». Взяли начало первого слова и конец второго: bi плюс t. Получилось bit. А ещё по-английски bit значит «кусочек», «чуть-чуть». Так что название получилось с двойным смыслом: и двоичная цифра, и маленький кусочек. Это знаменитый американский учёный Клод Шеннон впервые напечатал это слово в своей большой научной работе в 1948 году. Он сам написал, что слово ему подсказал коллега, математик Джон Тьюки.
Шеннона называют отцом теории информации. Он был очень необычным человеком. Например, ездил по коридорам своей лаборатории на одноколёсном велосипеде и одновременно жонглировал. А ещё он построил машину, которая называлась «Бесполезная машина». Это ящик с одним выключателем. Если щёлкнуть выключатель, из ящика вылезает механическая рука, выключает его обратно и прячется. Всё. Больше машина ничего не делает. Можете найти видео дома, это очень смешно. И, кстати, это тоже про биты: у машины ровно два состояния, и она изо всех сил хочет быть в состоянии ноль.
Попробуйте: один бит
Теперь возьмите телефоны. На странице урока есть панель «Попробуй: один бит». Там один выключатель. Нажмите на него. Что происходит?
Нажали? Он переключается: 0, 1, 0, 1. А теперь вопрос, как на сайте.
Сколько разных сообщений можно передать одним битом?
Ожидаемый ответ: два. «Да» или «нет», «свет горит» или «не горит», «идём в кино» или «не идём».
Правильно, два. Только два. Один бит это ответ на один вопрос, где ответ «да» или «нет». Включён ли свет? Есть ли сообщение? Нажата ли клавиша? Ты онлайн или офлайн? Вот этот зелёный кружочек у вашего друга в Telegram или в игре, «в сети» или «не в сети», это и есть один бит информации. Один бит про вашего друга.
Где в жизни прячутся биты
Давайте поищем биты вокруг нас. Я начну, а вы продолжайте. Включён ли на телефоне беззвучный режим: да или нет. Это бит. Включён ли Wi-Fi: да или нет. Бит. Лайкнул ли ты видео в TikTok: да или нет. Сердечко либо красное, либо пустое. Бит. Ваша очередь.
Придумайте ещё примеры, где в жизни есть ровно два варианта, как у бита.
Ожидаемый ответ: дверь открыта или закрыта, светофор для пешехода (идти или стоять), подписан ли ты на канал, сдан ли зачёт, орёл или решка, есть ли домашка. Если кто-то скажет «светофор для машин», уточните: там три цвета, это уже не один бит, а больше.
Отлично. Видите, мир полон битов. Каждый раз, когда ответ «да или нет», это бит. А теперь вопрос посложнее. В игре Minecraft, кто играет? Ага, многие. Там есть рычаг. Он либо включён, либо выключен. А есть редстоун, красная пыль, по которой бежит сигнал. Редстоун либо горит, либо не горит. Это чистейший бит. И знаете что? Люди в Minecraft из рычагов, редстоуна и факелов строят настоящие работающие компьютеры. Огромные, размером с город, медленные, но работающие. Потому что для компьютера больше ничего и не нужно: только сигнал «есть» или «нет» и способ одним сигналом управлять другим. Редстоуновый факел, кстати, работает как элемент «НЕ»: если на него приходит сигнал, он гаснет, если нет, горит. Ровно как транзистор.
Одного бита мало
Хорошо, один бит отвечает на один вопрос «да или нет». Но компьютеру нужно хранить гораздо больше. Буквы, числа, цвета. Как быть?
Вспомните задачку с фонариками. Если у вас один фонарик, вы передаёте два сообщения: «идём» и «не идём». А если у вас два фонарика? Давайте посчитаем, сколько комбинаций.
Оба выключены. Это раз. Левый выключен, правый включён. Два. Левый включён, правый выключен. Три. Оба включены. Четыре. Всего четыре варианта. Запишем нулями и единицами: 00, 01, 10, 11. Значит, двумя фонариками можно передать четыре разных сообщения: кино, парк, магазин, сидим дома. Помните, я задавал эту задачку в начале? Вот её решение.
Двумя битами можно передать 4 разных варианта. А тремя?
Сколько вариантов дают три бита? Попробуйте угадать, прежде чем считать.
Ожидаемый ответ: многие скажут 6, потому что «два бита четыре, значит три бита шесть». Это типичная ошибка, не исправляйте сразу. Скажите: «Проверим на телефонах».
Попробуйте: три бита
Откройте на телефоне панель «Попробуй: три бита». Там три выключателя, а справа видно, какое число они дают. Задание: найдите все комбинации. Все-все. Кто сколько найдёт? Считайте, сколько разных чисел вы увидели справа.
Ну что? Сколько нашли? Восемь? Кто нашёл восемь, поднимите руку. Отлично. Давайте выпишем их все на доску.
Вот все восемь: 000, 001, 010, 011, 100, 101, 110, 111. Больше нет, сколько ни ищите. И самое большое число, которое показал сайт, было 7. А самое маленькое 0. От нуля до семи, это ровно восемь чисел. Почему комбинации так странно соответствуют числам, мы поймём во второй теории. Пока запомните: три бита дают 8 вариантов.
Кто говорил «шесть»? Не стесняйтесь, это очень частая ошибка. Почему не шесть? Смотрите. Когда мы добавляем третий бит, у нас уже есть 4 комбинации из первых двух. Третий бит может быть 0 или 1. Значит, каждая из старых четырёх комбинаций превращается в две новые: с нулём впереди и с единицей впереди. Четыре умножить на два. Восемь. Не плюс два, а умножить на два.
Каждый новый бит удваивает
Вот главное правило первой теории. Запишите его, оно точно будет в игре и в боссе. Каждый новый бит удваивает число вариантов. Не прибавляет два, а удваивает, умножает на два.
- 1 бит: 2 варианта
- 2 бита: 4 варианта
- 3 бита: 8 вариантов
- 4 бита: 16 вариантов
- 5 бит: 32 варианта
- 6 бит: 64 варианта
- 7 бит: 128 вариантов
- 8 бит: 256 вариантов
Давайте дальше вместе. Один бит: два варианта. Два бита: четыре. Три бита: восемь. Четыре бита? Восемь умножить на два. Шестнадцать, правильно. Пять бит? Тридцать два. Шесть? Шестьдесят четыре. Семь? Сто двадцать восемь. Восемь? Двести пятьдесят шесть.
Двести пятьдесят шесть. Запомните это число, оно будет в третьей теории, и оно очень-очень важное для всего мира компьютеров. Восемь бит дают 256 вариантов.
Математики записывают это короче: «два в степени». Один бит это 2 в первой степени, то есть 2. Два бита это 2 во второй степени: 2 умножить на 2, будет 4. Три бита это 2 в третьей: 2 × 2 × 2 = 8. Сколько бит, столько раз умножаем двойку на саму себя. Младшие, если вы ещё не проходили степени в школе, не страшно. Просто помните: каждый раз удваиваем.
Быстрый опрос. Сколько вариантов дают 4 бита? А 5? А 6?
Ожидаемый ответ: 16, 32, 64. Если кто-то говорит «8, 10, 12», значит, он прибавляет по два, а не удваивает. Покажите ещё раз на таблице.
Сила удвоения: легенда о шахматной доске
Удвоение кажется простым, но оно очень быстро становится огромным. Есть старая легенда. Её рассказывают в Индии, Персии, у нас её тоже знают. Один мудрец придумал игру шахматы и подарил её правителю. Правитель так обрадовался, что сказал: проси что хочешь. Мудрец ответил: «Мне немного надо. Положи одно зёрнышко пшеницы на первую клетку доски. На вторую два. На третью четыре. На каждую следующую в два раза больше, чем на предыдущую. И так все 64 клетки».
Правитель посмеялся: какая скромная просьба. Мешок зерна, и всё. Приказал слугам посчитать. Слуги считали, считали, и пришли бледные. Оказалось, на последней, 64-й клетке должно лежать больше девяти миллиардов миллиардов зёрен. А всего на доске почти в два раза больше. Столько пшеницы не вырастили за всю историю человечества. Даже сейчас, если собрать весь урожай пшеницы со всей Земли за год, понадобятся сотни, а может и больше тысячи лет, чтобы набрать столько зерна.
Вот что значит удвоение. Начинается с одного зёрнышка, а заканчивается тем, что не хватает целой планеты. И с битами так же. 8 бит дают 256 вариантов. 16 бит дают уже 65 536. 32 бита дают больше четырёх миллиардов. А 64 бита, ровно как клеток на шахматной доске, дают столько вариантов, сколько зёрен было в той легенде. Кстати, ваши современные компьютеры и телефоны называются 64-битными. Запомните эту связь, мы к ней ещё вернёмся.
Для старших: точные числа из легенды
На клетку номер n кладут 2 в степени (n − 1) зёрен. На последнюю, 64-ю, это 2 в 63-й степени, примерно 9,2 × 10 в 18-й степени. Всего на доске 2 в 64-й минус 1, это 18 446 744 073 709 551 615 зёрен, примерно 1,8 × 10 в 19-й. Одно зерно пшеницы весит примерно 0,05 грамма, значит, всё вместе весит больше 900 миллиардов тонн. Мировой урожай пшеницы сейчас примерно 800 миллионов тонн в год, то есть понадобится больше тысячи лет. Интересно, что число 18 446 744 073 709 551 615 программисты узнают сразу: это самое большое число, которое помещается в 64-битную беззнаковую переменную. Мудрец, получается, придумал 64-битный компьютер.
Сила удвоения: сложите бумажку
Ещё один пример, его можно проверить прямо сейчас. Возьмите листок бумаги. Сложите пополам. Толщина стала в два раза больше. Ещё раз пополам. Ещё в два раза. Сколько раз вы сможете сложить обычный лист?
Шесть, семь раз, и всё, дальше не гнётся. Почему? Потому что после семи сгибов толщина стала в 128 раз больше. Сто двадцать восемь слоёв бумаги, это уже как толстая тетрадка. А теперь фантазия. Если бы мы могли сложить лист 42 раза, толщина получилась бы примерно как расстояние до Луны. Всего 42 сгиба! Вот она, сила удвоения. Каждый бит это один сгиб.
Акинатор и игра в 20 вопросов
Кто знает Акинатора? Это джинн на сайте или в приложении, который угадывает любого персонажа. Вы загадываете, например, Губку Боба или блогера, а он задаёт вопросы: «Ваш персонаж мужчина?», «Он из мультфильма?», «Он жёлтый?». И через двадцать с чем-то вопросов угадывает. Как он это делает? Магия?
Нет, биты. Каждый ответ «да» или «нет» это один бит. Каждый вопрос, если он хороший, делит всех возможных персонажей пополам. Двадцать вопросов, двадцать битов. А 20 битов дают сколько вариантов? Давайте считать удвоением: 10 битов дают 1024, это примерно тысяча. 20 битов дают примерно тысячу умножить на тысячу, то есть примерно миллион. Миллион персонажей можно различить всего за 20 вопросов «да или нет»!
Видите? Число от 1 до 100 мы угадали за семь вопросов. Потому что семь битов дают 128 вариантов, а это больше ста. Если бы я загадал от 1 до 1000, понадобилось бы 10 вопросов. Это и есть способ мерить информацию. Сколько вопросов «да или нет» нужно задать, чтобы всё узнать, столько битов информации в ответе.
Двоичный код был до компьютеров
Вы, наверное, думаете, что двоичный код придумали программисты, когда появились компьютеры. Или вообще Билл Гейтс. Кстати, в боссе будет такой неправильный вариант ответа, «так придумал Билл Гейтс», не попадитесь. Нет. Идея считать нулями и единицами намного старше компьютеров.
Больше трёхсот лет назад, в 1703 году, немецкий учёный Готфрид Лейбниц напечатал статью о двоичной арифметике. Он показал, что любое число можно записать только нулями и единицами. Лейбниц был в восторге. Ему казалось, что это очень красиво: весь мир из «ничего» и «одного». А ещё он с удивлением узнал, что похожие знаки из двух видов черточек, целой и разорванной, встречаются в древней китайской книге «И цзин», которой тысячи лет.
Потом, в середине XIX века, английский математик Джордж Буль придумал логику, где всё либо истина, либо ложь. Её до сих пор так и называют: булева логика. Если вы когда-нибудь будете программировать, вы увидите тип данных bool или boolean. Это в честь Буля. Переменная, которая может быть только true или false. Истина или ложь. Один бит.
А в 1937 году молодой Клод Шеннон, тот самый, с одноколёсным велосипедом, написал работу, где показал: булеву логику можно построить из электрических переключателей. Тогда это были реле, щёлкающие железные переключатели. Вот с этого момента и пошло. Логика Буля плюс выключатели, получается компьютер.
А ещё раньше был телеграф и азбука Морзе. Там тоже два вида сигнала: короткий, точка, и длинный, тире. SOS это три точки, три тире, три точки. Слепые люди читают шрифт Брайля: в каждой клеточке шесть точек, и каждая точка либо выпуклая, либо нет. Шесть битов! Сколько вариантов дают шесть битов? Шестьдесят четыре. Вот почему в шрифте Брайля примерно столько разных знаков: хватает и на буквы, и на цифры, и на знаки препинания.
В шрифте Брайля в клеточке 6 точек, каждая выпуклая или плоская. Сколько всего разных клеточек можно сделать?
Ожидаемый ответ: 64. Старшие могут заметить, что одна из них полностью пустая, это просто пробел, поэтому знаков с точками 63.
Дырка или не дырка: перфокарты
Ещё до появления экранов и клавиатур в компьютеры вводили данные с помощью перфокарт. Это картонные карточки, примерно как открытка. В них пробивали дырочки в определённых местах. Дырка есть, это одно состояние. Дырки нет, другое. Компьютер считывал карточки и по дыркам понимал, что ему делать. Программисты в 1960-х носили в руках толстые стопки таких карточек, и одна программа могла занимать коробку. Если коробку роняли и карточки перемешивались, это была катастрофа: нужно было раскладывать всё по порядку вручную. Поэтому на краю стопки рисовали косую линию фломастером, чтобы по ней быстро собрать карточки обратно.
А ещё раньше, в начале XIX века, французский мастер Жаккард сделал ткацкий станок, который ткал узоры по карточкам с дырками. Дырка значит «поднять нитку», нет дырки значит «не поднимать». Узор на ткани получался сам. Это был, по сути, станок, который работает по программе из битов, больше двухсот лет назад.
Почему не десять уровней тока
Теперь самый хитрый вопрос этой теории. Он есть на сайте в блоке «Глубже», и он точно будет в боссе. Мы считаем десятью цифрами, от 0 до 9. Почему бы не сделать компьютер, который тоже считает десятью цифрами? Можно же сделать не два уровня тока, а десять: совсем нет тока это 0, чуть-чуть это 1, побольше это 2, и так до 9. Это же удобнее: компьютер считал бы как мы.
Как вы думаете, почему так не сделали? Почему только два уровня?
Ожидаемый ответ: дети предлагают «так проще», «так дешевле», «компьютер не умеет до 10». Правильная идея: два состояния легко различить, а десять уровней легко перепутать из-за помех. Подведите к слову «шум».
Вот в чём дело. Провода в компьютере шумят. Не звуком, а током. Напряжение в проводе никогда не стоит ровно. Оно всё время немножко прыгает: из-за тепла, из-за соседних проводов, из-за того, что рядом включили микроволновку или телефон поймал сеть. Это называется электрический шум.
Давайте проверим на себе. Представьте, что я в шумном классе показываю вам рукой уровень. Рука внизу это ноль, рука наверху это единица. Вы с задней парты, даже если кто-то шумит и мешает, легко поймёте: рука внизу или наверху. А теперь я покажу рукой десять уровней. Уровень 6 или уровень 7? Чуть выше, чуть ниже. Ошибиться очень легко. А если у меня ещё и рука дрожит, вообще непонятно.
Видите? Вы назвали 5, 6, 7. Три разных ответа на один и тот же уровень. А «вверх или вниз» все сказали одинаково. Вот поэтому компьютеры двоичные. Два состояния, «есть ток» и «нет тока», легко отличить даже при шуме. А десять ступенек легко перепутать. А ошибка в компьютере это очень плохо. Перепутал одну цифру, и вместо 100 тенге у тебя на счету 700. Или в игре вместо твоего персонажа кто-то другой.
Ещё одна аналогия. Вы разговариваете с другом по телефону, а связь плохая, всё хрипит. Если он спрашивает «да или нет?», вы всё равно поймёте ответ. А если он диктует вам длинный номер телефона, вы будете переспрашивать каждую цифру: «пять или девять?». Так и компьютер: ему проще всегда спрашивать «да или нет».
Поэтому запомните, это ответ в боссе: компьютеры двоичные, потому что два состояния легче различить при шуме. Не потому что так придумал Билл Гейтс, не потому что десятичные цифры дороже, и не потому что компьютер не умеет считать до десяти. Он умеет считать хоть до миллиарда, просто записывает всё нулями и единицами.
А были ли недвоичные компьютеры?
Были! Самый известный ранний большой компьютер, американский ENIAC, который построили в 1945 году, считал именно десятичными цифрами. Он весил почти 30 тонн, занимал целый зал, и в нём было примерно 18 тысяч электронных ламп. Лампы постоянно перегорали, и инженеры бегали их менять. Десятичный способ оказался неудобным, и следующие компьютеры уже делали двоичными.
А в Советском Союзе, в Москве, в Московском университете, в 1958 году сделали компьютер «Сетунь». Он был не двоичный и не десятичный, а троичный. У него было три состояния: минус один, ноль и плюс один. Его придумал инженер Николай Брусенцов. «Сетунь» получилась надёжной и экономной, её выпустили несколько десятков штук. Но весь мир уже шёл по двоичному пути, все детали делали под двоичную логику, и троичные компьютеры так и остались интересной страницей истории.
Для старших: а внутри SSD уже не совсем два уровня
Интересный поворот. В современных SSD и флешках каждая ячейка памяти хранит не один бит, а несколько, и для этого различает несколько уровней заряда. Ячейка SLC хранит 1 бит (2 уровня), MLC хранит 2 бита (4 уровня), TLC 3 бита (8 уровней), QLC 4 бита (16 уровней). Чем больше уровней, тем дешевле гигабайт, но тем сложнее отличить уровни друг от друга, и тем быстрее ячейка изнашивается. Поэтому в таких накопителях есть мощная система исправления ошибок. Это ровно то, о чём мы говорили: больше уровней значит больше риск перепутать. Но наружу, процессору, SSD всё равно отдаёт обычные нули и единицы. Похожая история с сетями: по оптоволокну и Wi-Fi сигнал тоже передают с несколькими уровнями и фазами, чтобы втиснуть больше бит. Но внутри процессора уже много десятилетий царят только два состояния.
Как биты думают: И, ИЛИ, НЕ
Вы можете спросить: ну хорошо, выключатели. Но как из выключателей получается, что компьютер что-то решает? Как он «думает»? Сейчас покажу на очень простом примере, который знает каждый.
Представьте дверь в подъезд с домофоном. Она открывается, если и вы приложили ключ, и дёрнули ручку. Одно без другого не работает. Это называется логическое «И». Два входа, один выход. Выход равен 1, только когда оба входа равны 1.
А теперь звонок в квартиру, у которого две кнопки: одна внизу у подъезда, другая у самой двери. Звонок звенит, если нажали или одну кнопку, или другую, или обе сразу. Это логическое «ИЛИ». Выход равен 1, если хотя бы один вход равен 1.
И третий элемент, самый простой: «НЕ». Он всё переворачивает. Пришёл 0, выдаёт 1. Пришла 1, выдаёт 0. Как ночник, который сам включается, когда в комнате не светло.
Вот из таких элементов, «И», «ИЛИ», «НЕ», и собран весь процессор. Каждый элемент это несколько транзисторов. Из элементов собирают схемы, которые складывают числа, сравнивают их, запоминают. Миллиарды транзисторов, соединённых по таким простым правилам, и получается машина, которая показывает вам TikTok и обсчитывает графику в игре. Никакого волшебства, только очень много очень простых «да или нет».
В игре вы можете выстрелить, только если у вас есть патроны И вы не перезаряжаетесь. Какой это элемент?
Ожидаемый ответ: «И», а ещё в нём есть «НЕ» (не перезаряжаетесь). Похвалите тех, кто заметит «НЕ».
Кто строил в Minecraft дверь, которая открывается только с двух рычагов одновременно, тот строил элемент «И». А дверь, которую можно открыть кнопкой и снаружи, и изнутри, это элемент «ИЛИ». Так что многие из вас уже инженеры-схемотехники, просто об этом не знали.
Для старших: из «И-НЕ» можно собрать что угодно
Есть удивительный факт: если взять один-единственный тип элемента, «И-НЕ» (по-английски NAND, это «И», к которому сразу приставлено «НЕ»), то из него одного можно собрать любые другие элементы, а значит, и весь компьютер. Например, «НЕ» получается, если подать один и тот же сигнал на оба входа NAND. Поэтому NAND называют универсальным элементом. Отсюда же название памяти NAND-флеш, которая стоит в ваших флешках и SSD: её ячейки соединены по похожей схеме. Есть даже известный учебный курс «От NAND до тетриса», где студенты с нуля, из одного элемента NAND, проектируют компьютер и запускают на нём тетрис.
Биты, которые можно потрогать
А теперь покажу вам настоящие биты, которые можно потрогать пальцем.
Смотрите, вот на этой плате есть такая маленькая штучка с рычажками. Или вот такой колпачок, который надевается на два штырька. Это перемычка, по-английски джампер. Колпачок надет, контакты соединены, ток идёт: единица. Снят, ток не идёт: ноль. Раньше, когда компьютеры были попроще, люди так настраивали материнские платы: переставляли перемычки и щёлкали переключателями. Например, чтобы сказать плате, на какой частоте работать процессору. Это буквально ручная установка битов. Сейчас всё это делают в настройках BIOS, мы до этого дойдём во втором месяце.
А вот планка оперативной памяти. На ней чёрные прямоугольники, это микросхемы. Внутри каждой миллиарды крошечных ячеек, и каждая хранит один бит: заряжена или не заряжена. Вот на этой планке написано, например, 2 гигабайта. Сколько это битов, мы посчитаем в третьей теории. Спойлер: больше, чем людей на Земле.
Флешка, жёсткий диск, диск в телефоне, всё это хранит биты. Просто разными способами. Жёсткий диск хранит биты как крошечные намагниченные участки на блине: намагничено в одну сторону или в другую. Флешка и SSD хранят электрический заряд в ячейке. Оптический диск, CD или DVD, хранит их как крошечные ямки и ровные места на блестящей поверхности. Способов много, но смысл один: два состояния.
Типичные вопросы детей
«Если внутри только 0 и 1, как компьютер показывает видео?»
Ответ: видео это много картинок в секунду, картинка это много точек, у каждой точки цвет, а цвет это несколько чисел. Числа это биты. Получается очень-очень много битов, но всё равно только 0 и 1. Подробно это будет в четвёртом месяце.
«А если транзистор сломается, компьютер ошибётся?»
Ответ: может. Поэтому в важных местах, например в серверной памяти, есть специальная проверка ошибок. А ещё бывает, что бит переворачивается сам, например от космических лучей. Это редкость, но в космической технике это серьёзная проблема, и там всё делают с запасом.
«Почему процессор греется, если там только выключатели?»
Ответ: каждое переключение транзистора тратит чуточку энергии и превращает её в тепло. Чуточку, но транзисторов миллиарды, и щёлкают они миллиарды раз в секунду. Отсюда и тепло, и вентилятор, который мы видели на прошлом уроке.
«А квантовый компьютер тоже на нулях и единицах?»
Ответ: квантовый компьютер работает с кубитами, у которых до измерения бывает «смесь» нуля и единицы. Это очень необычная физика. Но когда результат измеряют, всё равно получаются обычные 0 и 1. И квантовые компьютеры пока огромные, капризные и нужны для особых задач, а не для игр.
Мини-викторина перед игрой
Ну что, проверим, готовы ли вы к первой игре. Отвечаем хором.
Из чего на самом деле сделан процессор?
Ожидаемый ответ: из транзисторов, крошечных выключателей.
Что хранит один бит?
Ожидаемый ответ: 0 или 1. Не букву, не число до 255, не картинку. Одно «да или нет».
Два бита дают сколько вариантов? Три? Пять?
Ожидаемый ответ: 4, 8, 32.
Почему компьютеры двоичные, а не десятичные?
Ожидаемый ответ: потому что два состояния легче различить при шуме.
Отлично. А сейчас вас ждёт пульт Бита. Переходим к игре.
Игра 1. Включи свет
Итак, первая игра урока. Называется «Включи свет». Бит Байт дал вам пульт с выключателями. Игра покажет вам число, а вы должны включить нужные биты, чтобы получилось ровно это число. Внизу под каждым выключателем подписано, сколько он «весит», и показана сумма. Так что считать в уме не нужно, пробуйте и смотрите на сумму.
Сначала будет три выключателя, потом четыре, потом пять. Всего восемь заданий, и на каждое ограниченное время. Не торопитесь, но и не зависайте.
Важно: задания у всех разные, случайные. У соседа будет одно число, у вас другое. Так что подглядывать бесполезно, лучше понять самому. И ещё: пока вы не выиграете эту игру, вторая теория у вас на телефоне не откроется. Так что играем честно и до победы. Кто проиграл, жмёт «ещё раз», это не страшно.
За чем следить:
- Младшие часто тыкают все выключатели подряд наугад. Подскажите стратегию: «Сначала включи самый большой, который не больше числа. Потом смотри, сколько осталось».
- Кто-то включает лишнее и не понимает, почему сумма больше. Скажите: «Выключи самый большой и посмотри снова».
- Если старшие проходят за две минуты, предложите им пройти ещё раз на время или помочь соседу, но не нажимая за него.
- Эта игра опережает Теорию 2: веса 1, 2, 4, 8, 16 дети тут видят впервые. Это нормально, игра специально так сделана, а объяснение будет сразу после.
Разбор ошибок после игры
Отлично, все справились. Давайте разберём, на чём спотыкались.
- «Я включал наугад, и долго не получалось». Метод простой: ищем самый большой вес, который не больше нужного числа, включаем его, а остаток добираем меньшими. Подробно разберём в Теории 2.
- «У меня сумма получилась больше». Значит, включён слишком большой бит. Выключи его и попробуй следующий поменьше.
- «Я думал, что левый бит самый маленький». Нет, самый маленький вес у правого бита, он равен 1. Веса растут справа налево.
- «Как получить нечётное число?» Нечётные числа всегда с включённым правым битом, весом 1. Только он может сделать число нечётным, все остальные веса чётные.
- «Как получить ноль?» Все выключить. Ноль это тоже число, и его тоже можно записать.
- «Можно ли получить 32 пятью битами?» Нет. Пять бит дают 32 варианта, но это числа от 0 до 31. Самое большое, все пять включены: 16 + 8 + 4 + 2 + 1 = 31.
Последний пункт очень важный, запомните его. Мы ещё увидим то же самое с байтом и числом 255.
Теория 2. Как считать в двоичном коде
Сначала про обычные числа
В игре вы видели под выключателями подписи: 1, 2, 4, 8, 16. Откуда они взялись? Почему именно такие? Сейчас разберёмся. Но сначала давайте поговорим про числа, которые вы и так знаете с первого класса. Про обычные, десятичные.
Вот число 345. Что значит каждая цифра?
Что значит тройка в числе 345? А четвёрка? А пятёрка?
Ожидаемый ответ: три сотни, четыре десятка, пять единиц. 300 + 40 + 5 = 345.
Правильно. Три сотни, четыре десятка, пять единиц. Цифра одна и та же, тройка, но в разном месте она значит разное. Справа она бы значила просто три, а слева значит триста. Это называется позиционная система: значение цифры зависит от позиции, от места, где она стоит.
И ещё одна вещь. Каждая позиция весит ровно в 10 раз больше соседней справа. Единицы, потом десятки, в 10 раз больше. Потом сотни, ещё в 10 раз больше. Потом тысячи. Каждый раз умножаем на 10. Почему на 10? Потому что у нас 10 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. А почему у нас 10 цифр, кто знает?
Почему люди считают десятками? Откуда вообще взялось число 10?
Ожидаемый ответ: потому что у нас 10 пальцев на руках. Именно так считают учёные: древние люди считали на пальцах.
Да! Потому что у нас десять пальцев. Люди тысячи лет считали на пальцах, и так получилось, что десятка стала главным числом. Если бы у нас было по четыре пальца на руке, как у мультяшных персонажей, мы бы, наверное, считали восьмёрками. Кстати, не все народы считали десятками. Древние жители Месопотамии считали шестидесятками, и поэтому в часе 60 минут, а в минуте 60 секунд. Это след их системы, которой уже несколько тысяч лет. А у некоторых народов был счёт двадцатками, по пальцам рук и ног. Во французском языке до сих пор число 80 называется «четыре двадцатки».
Что происходит, когда цифры заканчиваются
Давайте посчитаем, как в первом классе. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Стоп. Цифры закончились. Больше нет отдельной цифры для следующего числа. Что делаем? Пишем в правой позиции 0, а в следующую слева ставим 1. Получается 10. Десять. Одна десятка и ноль единиц.
Похоже на одометр в машине, счётчик километров у папы на панели. Или на счётчик воды в ванной, кто видел. Колёсико с цифрами крутится: 7, 8, 9, и когда проходит девятку, оно возвращается на 0, а соседнее колёсико слева щёлкает на один вперёд. 09 превращается в 10. 099 превращается в 100. Все девятки разом переворачиваются в нули, а слева прибавляется единица.
А теперь цифр всего две
А теперь представьте одометр, у которого на каждом колёсике всего две цифры: 0 и 1. Двоичный одометр. Давайте покрутим его.
Начинаем. Ноль: 0000. Добавим один: 0001. Это один. Добавим ещё один. Правое колёсико уже стоит на единице, а дальше цифр нет! Единица была последней цифрой. Значит, как у обычного одометра с девяткой: правое колёсико переворачивается в ноль, а соседнее слева щёлкает на единицу. Получается 0010. Это два.
Стоп. Смотрите, что мы только что написали. «Один, ноль». В двоичном коде два записывается как 10.
10 = ?, и допишите: 10 = 2 (в двоичном). Сделайте паузу. Дайте классу самому прочитать.Ну что, теперь посмотрите на угол доски. Помните нашу загадку с разминки? «Существует 10 типов людей». А теперь читаем «10» в двоичном коде. Это два! Два типа людей: те, кто понимает двоичный код, и те, кто нет. Вот и вся шутка. Тот, кто написал этот мем, записал число двоичным кодом. Кто понимает двоичный код, читает «два» и смеётся. Кто не понимает, читает «десять» и удивляется, где остальные восемь типов. Ну, теперь смешно?
Продолжаем крутить одометр. 0010, это два. Добавим один: 0011. Это три. Добавим ещё. Правое колёсико на единице, переворачивается в ноль, щёлкает соседнее. А соседнее тоже на единице! Тоже переворачивается в ноль и щёлкает следующее. Как у обычного одометра 099, превращается в 100. Получаем 0100. Это четыре.
Дальше: 0101 это пять, 0110 это шесть, 0111 это семь. А теперь добавим один к 0111. Все три правых колёсика на единице, все переворачиваются в ноль, и щёлкает четвёртое: 1000. Это восемь.
Смотрите, какая закономерность. Когда в обычной системе появляется новая позиция? На 10, на 100, на 1000. Каждый раз в 10 раз больше. А в двоичной? Новая позиция появилась на двойке (10), на четвёрке (100), на восьмёрке (1000). Каждый раз в 2 раза больше. Вот откуда веса!
Веса позиций: 1, 2, 4, 8, 16, 32, 64, 128
Вот правило, которое написано у вас на сайте. В обычных числах каждая позиция весит в 10 раз больше соседней: единицы, десятки, сотни. В двоичном коде каждая позиция весит в 2 раза больше. Справа налево: 1, 2, 4, 8, 16, 32, 64, 128.
Это и есть те самые числа, которые вы видели в игре под выключателями. Один, два, четыре, восемь, шестнадцать. Каждый следующий в два раза больше. Заметили? Это же та же самая таблица удвоения, что мы рисовали в первой теории! Один бит давал 2 варианта, два бита 4, три бита 8. И веса тоже удваиваются. Это не совпадение, это одна и та же математика с двух сторон.
Обратите внимание на одну важную вещь: считаем справа налево. Самая правая позиция самая лёгкая, она весит 1. Самая левая самая тяжёлая. Точно как в обычных числах: справа единицы, слева тысячи. Многие путаются и начинают с левого края, и всё ломается. Правый бит всегда весит один.
Какой вес у самого правого бита? А у пятого справа?
Ожидаемый ответ: 1 и 16. Для пятого: считаем 1, 2, 4, 8, 16.
Как прочитать двоичное число
Теперь самое главное умение второй теории. Как прочитать двоичное число, то есть понять, какое это обычное число? Правило очень простое, оно на сайте: складываем веса там, где стоит 1. Где стоит 0, вес не считаем.
Возьмём пример с сайта: 1101. Подписываем веса справа налево.
Самая правая цифра 1, её вес 1. Берём. Следующая 0, её вес 2. Ноль значит выключено, не берём. Следующая 1, вес 4. Берём. Самая левая 1, вес 8. Берём. Складываем то, что взяли: 8 плюс 4 плюс 1. Сколько? Тринадцать. Значит, 1101 в двоичном коде это 13 в обычном.
Представьте, что это не цифры, а выключатели с ценниками. Включённый выключатель отдаёт свой вес в общую копилку, выключенный ничего не отдаёт. В копилке в конце лежит число. Можно ещё представить монеты. У вас есть монеты достоинством 1, 2, 4 и 8 тенге, по одной каждой. Единица значит «эта монета у меня в кармане», ноль значит «нету». 1101: восьмитенговая есть, четырёхтенговая есть, двухтенговой нет, однотенговая есть. Итого в кармане 13 тенге.
Давайте потренируемся вместе. Я пишу, вы считаете. Не кричите сразу ответ, сначала поднимите руку.
101= 4 + 1 = 5110= 4 + 2 = 6111= 4 + 2 + 1 = 71000= 81010= 8 + 2 = 101111= 8 + 4 + 2 + 1 = 1510000= 1610101= 16 + 4 + 1 = 2111111= 16 + 8 + 4 + 2 + 1 = 31
Видите закономерности? Давайте их найдём, они помогут в игре.
Первая. Единица и за ней нули, например 10, 100, 1000, 10000, это всегда сам вес: 2, 4, 8, 16. Как в обычных числах 10, 100, 1000 это степени десятки, так в двоичном это степени двойки.
Вторая. Все единицы, например 1, 11, 111, 1111, 11111, это всегда «следующий вес минус один». 111 это 7, а следующий вес 8. 1111 это 15, а следующий вес 16. 11111 это 31, на один меньше 32. Как в обычных числах: 9, 99, 999 это на один меньше, чем 10, 100, 1000.
Третья. Если правая цифра 1, число нечётное. Если 0, чётное. Потому что только правый вес, единица, нечётный. Все остальные веса чётные: 2, 4, 8 и так далее. Это очень удобно в игре: видите в конце единицу, сразу выбрасываете все чётные варианты ответа.
Не считая, скажите: 10110 это чётное или нечётное число?
Ожидаемый ответ: чётное, потому что справа стоит 0. А вообще это 16 + 4 + 2 = 22.
Как записать обычное число двоичным кодом
Теперь в обратную сторону. У нас есть обычное число, например 13. Как записать его нулями и единицами? Это как раз то, что вы делали в игре «Включи свет». Там вы подбирали выключатели под число. А теперь научимся делать это не наугад, а методом.
Метод с сайта. Берём самый большой вес, который влезает в наше число. Для 13 подходят веса 1, 2, 4, 8. 16 уже не влезает, это больше 13. Значит, самый большой 8. Включаем его. Остаётся 13 минус 8, то есть 5. Теперь для 5: влезает ли 4? Да. Включаем 4, остаётся 1. Влезает ли 2 в 1? Нет. Выключено, ставим 0. Влезает ли 1? Да. Включаем, остаётся 0. Всё, число набрано.
Включили биты 8, 4 и 1. Ставим единицы на эти места, а на месте 2 ставим ноль. Получилось 1101. Проверим: 8 + 4 + 1 = 13. Сошлось!
Это как сдача монетами. Вам нужно отдать 13 тенге, а монеты только 8, 4, 2 и 1, по одной каждой. Вы сначала даёте самую крупную, которая не больше суммы. Потом добираете мелкими. Вот и весь метод. Кстати, именно так поступает кассир в магазине, когда отсчитывает сдачу, сначала крупные купюры, потом мелочь.
Давайте ещё. Запишем 10. Самый большой вес, который влезает: 8. Остаток 2. Влезает 4? Нет, ноль. Влезает 2? Да, остаток 0. Влезает 1? Остаток уже 0, ничего не нужно, ноль. Получилось 8, нет 4, есть 2, нет 1: 1010.
Запишите двоичным кодом число 6. А число 9. А 20.
Ожидаемый ответ: 6 = 4 + 2 = 110. 9 = 8 + 1 = 1001. 20 = 16 + 4 = 10100.
Живой байт
А теперь игра, где компьютером будете вы сами. Мне нужно восемь добровольцев.
Вы теперь байт. Восемь битов. Каждый из вас это один транзистор. Если я говорю вам число, вы должны сами решить, кто встаёт, а кто садится. Класс проверяет. Сначала все садятся. Все сели? Это 00000000, число ноль.
Поехали. Число 5!
А теперь число 255. Все встают? Все восемь. Складываем: 128 плюс 64 плюс 32 плюс 16 плюс 8 плюс 4 плюс 2 плюс 1. Двести пятьдесят пять! Это самое большое число, которое может показать наш байт из восьми человек. А теперь, внимание, число 256!
Что делать? Все уже стоят. Больше встать некому. Нужен девятый человек с листом 256! А его нет. Вот это и называется переполнение: число не помещается. Байт из восьми бит может показать только числа от 0 до 255. Запомните это, мы к нему вернёмся в третьей теории.
Пульт байта
Спасибо нашему живому байту, садитесь. Теперь возьмите телефоны. На странице есть панель «Пульт байта». Там восемь выключателей, под ними подписаны веса от 128 до 1, а справа сумма. Это электронная версия того, что мы только что делали.
- Наберите своё число лет.
- Наберите номер своего дома или квартиры (если он не больше 255).
- Наберите 255. Что видно справа?
- Наберите 128. Сколько выключателей включено?
- Найдите число, где включены только два левых. (128 + 64 = 192)
Наберите сначала свой возраст. Кому 12, у того должно получиться 8 плюс 4, то есть 00001100. Кому 15, у того 8 + 4 + 2 + 1, 00001111. Кому 16, у того один-единственный бит 16, 00010000. Повезло: ровно степень двойки. А мне, ну, я свой возраст наберу дома.
Видите там справа ещё слово HEX и какие-то буквы и цифры? Это шестнадцатеричный код. Пока не обращайте на него внимания, это будет в третьей теории. Но можете уже заметить, что когда вы набрали 255, там написано FF. Загадка на потом.
Почему программисты считают с нуля
Вы заметили, что мы всё время начинаем с нуля? Три бита дают числа от 0 до 7. Байт от 0 до 255. HEX от 0 до F. Почему не с единицы, как люди?
Потому что «все выключатели выключены» это тоже вариант, и было бы глупо его выбросить. Это самое первое состояние, с которого всё начинается. Если начинать с единицы, мы теряем один вариант, и в байт влезало бы только 255 чисел вместо 256. Поэтому в компьютерах привыкли считать с нуля. Программисты так привыкли, что даже в жизни иногда шутят: «у меня нулевой этаж», «это мой нулевой кофе за день». А в программировании первый элемент списка почти всегда имеет номер 0. Многие новички на этом ошибаются, а старые программисты над ними смеются. Вот вам ещё одна причина знать двоичный код.
Четыре бита дают 16 вариантов. Какое самое маленькое и какое самое большое число можно ими записать?
Ожидаемый ответ: от 0 до 15. Самое большое 1111 = 8 + 4 + 2 + 1 = 15.
Счёт на пальцах до 1023
Хотите фокус? На двух руках можно посчитать не до десяти, а до тысячи двадцати трёх. Сейчас покажу как.
Каждый палец это бит. Загнут это 0, поднят это 1. Правая рука, большой палец, это вес 1. Указательный 2. Средний 4. Безымянный 8. Мизинец 16. Это пять бит, до 31 на одной руке. А потом левая рука продолжает: 32, 64, 128, 256, 512. Десять пальцев, десять бит. Сколько вариантов дают 10 бит? Удваиваем: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024. Значит, можно показать числа от 0 до 1023.
Дома потренируйтесь считать от 0 до 31 на одной руке. Это отличная тренировка, после неё двоичный код станет вам как родной. Говорят, некоторые программисты так и считают на пальцах, когда никто не видит.
Числа, которые вы встречали и не знали, что они двоичные
Смотрите, сколько двоичных чисел вокруг вас. Мы выучили веса: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024. А теперь вспомните, где вы их встречали.
- Память телефона: 32, 64, 128, 256, 512 гигабайт. Никогда не бывает телефона на 100 или 200 ГБ. Только степени двойки.
- Оперативка: 4, 8, 16, 32 гигабайта.
- В Minecraft стак, стопка блоков, это 64 штуки. Почему не 50 и не 100? Потому что 64 это круглое число для компьютера, 2 в шестой степени. А некоторые предметы, например эндер-жемчуг, складываются по 16. Тоже степень двойки.
- Игра 2048, где сдвигаешь плитки: 2, 4, 8, 16, 32 и так до 2048. Это вообще игра про степени двойки.
- Размеры старых текстур в играх: 64 × 64, 128 × 128, 256 × 256 пикселей.
Где ещё вы видели числа 16, 32, 64, 128, 256?
Ожидаемый ответ: флешки, карты памяти, оперативка, игры, количество игроков на сервере, размер группы в мессенджере. Например, в WhatsApp группа долго была ограничена 256 участниками, а потом лимит подняли до 512 и до 1024. Всё степени двойки.
8 бит, 16 бит: Денди и Сега
Спросите дома родителей, во что они играли в детстве. Очень может быть, что они скажут: «В Денди» или «в Сегу». Это игровые приставки девяностых. Про Денди говорили, что она «восьмибитная», а про Сегу Mega Drive, что она «шестнадцатибитная». Что это значит?
Это значит, сколько бит процессор приставки обрабатывает за один раз. Процессор Денди работал с числами по 8 бит, то есть от 0 до 255. Поэтому в играх того времени было так мало цветов на экране, такая простая «пиксельная» графика и такая пищащая музыка. Эту музыку до сих пор так и называют: восьмибитная, или чиптюн. Её специально пишут современные музыканты, а в Minecraft и многих инди-играх нарочно делают «восьмибитный» стиль, потому что это красиво и ностальгично.
Шестнадцать бит дают уже 65 536 вариантов. Поэтому на Сеге графика была богаче. Потом были 32-битные и 64-битные приставки. А ваши современные телефоны и компьютеры 64-битные: процессор работает с числами по 64 бита за раз. Помните шахматную доску с 64 клетками и горой зерна? Вот такие огромные числа ваш телефон обрабатывает за один шаг.
Самое большое число, с которым за один раз работал процессор Денди?
Ожидаемый ответ: 255, потому что 8 бит. Старшие могут сказать, что программисты умели складывать и большие числа по кусочкам, и это правда.
Истории про переполнение
Помните, наш живой байт не смог показать 256, потому что не хватило людей? В настоящих программах бывает то же самое, и иногда получаются очень смешные истории.
Первая история. Старая аркадная игра Pac-Man, жёлтый колобок, который ест точки и убегает от привидений. Номер уровня в ней хранился в одном байте. Игроки, которые прошли 255 уровней, а это очень много часов игры, доходили до 256-го. И там игра ломалась: правая половина экрана превращалась в кашу из случайных символов, и пройти уровень было невозможно. Это знаменитый «уровень смерти». Программисты просто не думали, что кто-то дойдёт так далеко.
Вторая история. YouTube и клип «Gangnam Style» корейского певца PSY. Кто слышал эту песню? Ну, ваши родители точно слышали, это был 2012 год. Клип набрал столько просмотров, что счётчик YouTube чуть не сломался. Счётчик был 32-битным, и самое большое число, которое он мог показать, было примерно 2 миллиарда 147 миллионов. В 2014 году клип подошёл к этой границе, и YouTube срочно переделал счётчик на 64 бита. Они даже пошутили об этом в официальном посте. А теперь 64-битного счётчика хватит, если каждый человек на Земле будет смотреть каждое видео миллиарды раз.
Третья история, про игру The Legend of Zelda на старой приставке. Там нельзя было накопить больше 255 рупий, местных денег. Почему 255? Вы уже знаете: один байт.
Для старших: почему счётчик YouTube был ограничен 2 миллиардами, а не 4
32 бита дают 2 в 32-й, примерно 4,29 миллиарда вариантов. Но если число может быть отрицательным (а программисты по умолчанию часто берут именно такой тип), то один бит уходит на знак. Получается диапазон от −2 147 483 648 до 2 147 483 647. Положительных вариантов в два раза меньше, примерно 2,1 миллиарда.
Отрицательные числа в компьютере хранят хитрым способом, он называется дополнительный код. В байте со знаком числа идут от −128 до 127. Если к 127 прибавить 1, получится не 128, а −128: счётчик «перескакивает» на другой конец. Именно из-за этого в старых играх иногда случались странности: у персонажа, получившего слишком много очков, они становились отрицательными.
Похожая проблема ждёт старые системы в 2038 году. Многие программы хранят время как число секунд с 1 января 1970 года в 32-битной переменной со знаком. 19 января 2038 года это число превысит 2 147 483 647, и часы в таких системах «перепрыгнут» в 1901 год. Большинство современных систем уже перешли на 64-битное время, но старое оборудование ещё встречается.
Двоичные часы и тайное послание
Ещё одна штука, которую любят гики. Бывают двоичные часы. Вместо цифр на них столбики лампочек. Каждый столбик это одна цифра времени, записанная битами. Например, если в столбике горят нижняя и третья снизу лампочки, это 1 + 4 = 5. Тот, кто не знает двоичный код, видит просто мигающие огоньки. А вы теперь можете по ним узнать время. Есть такие приложения и для телефона, можете поставить и хвастаться.
И тайное послание. Помните задачку с фонариком из разминки? Теперь вы знаете, как передать другу любое число фонариком. Договариваетесь: длинная вспышка это 1, короткая это 0, и всегда передаёте ровно пять вспышек. Пять бит, это 32 варианта. Хватит на все буквы английского алфавита и ещё останется. Вы только что изобрели свой собственный код. Примерно так работали первые телеграфы: у них тоже было пять сигналов на букву.
Для старших: код Бодо и телетайпы
В XIX веке французский инженер Эмиль Бодо придумал телеграфный код, где каждая буква передавалась пятью двоичными сигналами. Пять бит дают 32 варианта, а букв и цифр больше, поэтому были два специальных кода переключения: «дальше идут буквы» и «дальше идут цифры». Так удавалось уместить и то, и другое. Это прямой предок ASCII. Кстати, в честь Бодо назвали единицу скорости передачи сигналов: бод. Её до сих пор можно встретить в настройках модемов и последовательных портов.
Перевод делением на 2
На сайте есть блок «Глубже» про второй способ перевода. Он немного сложнее, но зато работает с любым числом, даже огромным, и не нужно помнить веса. Давайте покажу, а младшие могут просто посмотреть.
Делим число на 2 и записываем остаток. Остаток бывает только 0 или 1. Потом делим результат снова на 2, снова записываем остаток. И так, пока не получится ноль. Потом читаем остатки снизу вверх.
- 13 : 2 = 6, остаток 1
- 6 : 2 = 3, остаток 0
- 3 : 2 = 1, остаток 1
- 1 : 2 = 0, остаток 1
Читаем остатки снизу вверх: один, один, ноль, один. 1101. То же самое, что мы получили первым способом. Так и должно быть, это просто два пути к одному ответу. Именно так работают программы, которые переводят числа внутри компьютера.
Кто хочет к доске: переведите делением на 2 число 25.
Ожидаемый ответ: 25 : 2 = 12 ост. 1; 12 : 2 = 6 ост. 0; 6 : 2 = 3 ост. 0; 3 : 2 = 1 ост. 1; 1 : 2 = 0 ост. 1. Снизу вверх: 11001. Проверка: 16 + 8 + 1 = 25.
Для старших: почему деление на 2 работает
Остаток от деления на 2 говорит, чётное число или нечётное. А мы уже знаем, что чётность определяется самым правым битом. Значит, первый остаток это правый бит. Когда мы делим на 2 без остатка, мы как бы «отрезаем» правый бит и сдвигаем всё число вправо. Например, 1101 после деления на 2 становится 110, то есть 6. Следующий остаток даёт следующий бит. Поэтому остатки получаются справа налево, и читать их нужно снизу вверх.
Отсюда интересное следствие: умножить двоичное число на 2 это просто дописать справа ноль, как в обычной системе умножить на 10. Процессоры очень любят такие операции, они называются сдвигами и выполняются очень быстро.
Для старших: сложение в столбик в двоичном коде
Складывать двоичные числа можно в столбик, как обычные. Только правила совсем короткие: 0 + 0 = 0, 0 + 1 = 1, 1 + 1 = 10 (пишем 0, один в уме), 1 + 1 + 1 = 11 (пишем 1, один в уме). Например, 0101 (5) + 0011 (3): справа 1 + 1 = 10, пишем 0, один в уме. Дальше 0 + 1 + 1 = 10, пишем 0, один в уме. Дальше 1 + 0 + 1 = 10, пишем 0, один в уме. Дальше 0 + 0 + 1 = 1. Итог 1000, то есть 8. Всё сошлось.
Схема, которая складывает два бита, называется полусумматор и собирается всего из двух логических элементов: «исключающее ИЛИ» даёт цифру, а «И» даёт перенос. Из таких кусочков собирают сумматор любой длины. На следующем уроке, когда будем говорить про процессор, вспомните это: внутри процессора есть блок, который делает ровно такое сложение, только с 64 битами за раз.
Типичные вопросы детей
«А как компьютер понимает, где кончается одно число и начинается другое, если там одни нули и единицы?»
Ответ: договорились о длине. Например, каждое число занимает ровно 8 бит, или 32, или 64. Компьютер отсчитывает нужное количество и знает, что дальше новое число. Поэтому в начале стоят нули: 00000101 это пять, просто дополненное до восьми бит. Как у вас в дневнике дата 05.09, ноль впереди ничего не меняет.
«А дробные числа как записать?»
Ответ: тоже нулями и единицами, но по особой договорённости. Например, отдельно хранят цифры числа и отдельно, где стоит запятая. Это сложнее, разберём, когда будем говорить про программирование. Старшим можно сказать название: числа с плавающей точкой.
«Зачем учить это руками, если компьютер сам всё переводит?»
Ответ: чтобы понимать, что происходит. Почему флешка на 64 ГБ показывает меньше, почему в игре 255 максимум, почему у IP-адреса числа только до 255. Это всё следствия двоичного кода. Кто его понимает, тот видит компьютер насквозь.
Мини-викторина перед игрой
Какие веса у битов справа налево?
Ожидаемый ответ: 1, 2, 4, 8, 16, 32, 64, 128.
Сколько будет 111? А 1001? А 10010?
Ожидаемый ответ: 7, 9, 18.
Что значит «10» в двоичном коде?
Ожидаемый ответ: 2. И поэтому в меме два типа людей.
Игра 2. Прочитай код
Вторая игра называется «Прочитай код». Она наоборот к первой. Там вам давали число, и вы включали биты. А здесь вам показывают двоичный код, ряд нулей и единиц, а вы выбираете, какое это обычное число. Варианты ответа даны, нужно выбрать правильный.
Подсказка та же, что мы учили: складывайте веса там, где стоит 1. Веса справа налево: 1, 2, 4, 8, 16. Сначала будут коды из трёх бит, потом из четырёх, потом из пяти. Восемь заданий, на каждое есть время.
Как и в прошлый раз, у каждого свои случайные задания, так что смотреть к соседу бесполезно. И третья теория у каждого откроется только после победы в этой игре. Можно писать веса на бумажке или на ладони, это не списывание, это шпаргалка, которую мы сами сделали. Поехали!
За чем следить:
- Кто-то считает веса слева направо: для
100отвечает 1 вместо 4. Подойдите и попросите «ведём пальцем справа налево: один, два, четыре». - Кто-то просто считает количество единиц: для
1011отвечает 3. Объясните, что единица это «взять вес», а не «прибавить один». - Кто-то читает двоичный код как обычное число и выбирает вариант «101» или «десять». Обычно это младшие. Сядьте рядом на одно задание.
- Подскажите правило чётности: если в конце 1, ответ нечётный. Это сразу отбрасывает половину вариантов.
- Если вся группа быстро прошла, устройте соревнование: кто наберёт больше очков за второе прохождение.
Разбор ошибок после игры
- «Я перепутал, с какой стороны начинать». Правый бит всегда весит 1. Как в обычных числах единицы стоят справа.
- «Я посчитал количество единиц». В
1011три единицы, но число не 3, а 8 + 2 + 1 = 11. Единица означает «включи этот вес». - «Не успевал по времени». Помогает запомнить веса наизусть до 16 и использовать правило чётности.
- «Нули в начале меня сбили».
00101это то же самое, что101, то есть 5. Нули слева ничего не добавляют, как в числе 007. - «Все единицы, а я долго складывал». Запомните хитрость: все единицы это следующий вес минус один.
1111= 16 − 1 = 15,11111= 32 − 1 = 31. - «Одна единица и нули». Это просто сам вес:
10000= 16.
Молодцы. Теперь вы умеете и записывать числа двоичным кодом, и читать их. Это то, что делает компьютер миллиарды раз в секунду. Осталось узнать, как из этих чисел получаются буквы и гигабайты.
Теория 3. Байты, буквы и гигабайты
Что такое байт
Помните наш живой байт из восьми человек? Вот так и называется эта штука: восемь битов вместе называются байт. Запишите: 8 бит = 1 байт. Это, пожалуй, самое важное равенство в компьютерах. Оно будет в боссе.
Почему именно восемь? Так сложилось исторически. В 1950-х годах инженеры компании IBM придумали слово «byte», «байт», для группы битов, которую компьютер обрабатывает за раз. Придумал его инженер Вернер Бухгольц. Специально написали через «y», а не «bite», чтобы случайно не перепутать с «bit» при письме. А по-английски «bite» значит «укус». Так что байт это «кусочек», который компьютер откусывает от данных за раз. Сначала байты были разной длины, но в 1960-х IBM выпустила очень популярный компьютер, где байт был ровно восемь бит, и все стали так делать. С тех пор во всём мире байт это 8 бит.
А теперь про семью нашего кота. Бит Байт, помните, из семьи Байт. Вот представьте: в семье Байт восемь котят, и каждый либо спит, либо ест. По тому, кто спит и кто ест, можно передать одно из 256 сообщений. Мама Байт так и делает: смотрит на котят и сразу знает, какое сегодня число.
Кстати, у половины байта, четырёх битов, тоже есть название. Это называется «полубайт», а по-английски «nibble». Это шутка: bite это укус, а nibble это маленький укус, откусить чуть-чуть. Полубайт нам понадобится, когда дойдём до HEX.
Сколько чисел помещается в байт
Сколько вариантов дают 8 бит? Мы считали в первой теории удвоением: 256. Значит, байтом можно записать 256 разных чисел. Самое маленькое это все нули, 00000000, это 0. Самое большое это все единицы, 11111111. Сколько это? Мы считали на живом байте: 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255.
Внимание, тут ловушка, и она точно будет в боссе. Вариантов 256, а самое большое число 255. Почему не 256? Потому что счёт идёт с нуля. Ноль это тоже вариант. От 0 до 255 ровно 256 чисел. Как в лифте, где есть этаж 0: если кнопки от 0 до 9, то кнопок десять, а самый высокий этаж девятый.
Какое самое большое число помещается в один байт?
Ожидаемый ответ: 255. Если отвечают 256, напомните: вариантов 256, но первый из них это ноль.
А сколько вариантов у одного байта?
Ожидаемый ответ: 256.
Число 255 встречается в компьютерах везде. Если вы когда-нибудь будете настраивать домашний роутер, вы увидите адрес вроде 192.168.0.1, и маску 255.255.255.0. Каждое из этих чисел это один байт, поэтому там никогда не бывает чисел больше 255. Это мы будем разбирать в пятом месяце, когда дойдём до сетей. А в программах для рисования, когда выбираешь цвет, у красного, зелёного и синего ползунки от 0 до 255. Тоже байт.
Сколько бит в двух байтах? В трёх? В пяти?
Ожидаемый ответ: 16, 24, 40. Умножаем на 8. Это вопрос из босса, неправильные варианты там 10 × N, 4 × N, N + 8, 16 × N.
Как компьютер хранит буквы
Хорошо, числа мы записывать умеем. Но вы же пишете в Telegram не числа, а слова. «Привет», «го в Бравл», «чё по домашке». Как компьютер хранит буквы, если у него только нули и единицы?
Как вы думаете, как компьютер хранит буквы?
Ожидаемый ответ: «как картинки», «как специальный код», «как числа». Ответ «как картинки» очень частый, и он неправильный, это вариант ответа в боссе. Правильно: как числа по таблице.
Снова то же волшебное слово: договорились. Люди договорились и составили таблицу. В ней у каждой буквы, цифры и знака есть свой номер. Компьютер хранит не саму букву, а её номер. А когда нужно показать букву на экране, он смотрит в таблицу: номер 65, ага, это буква A, нарисую её.
Это как номерки в гардеробе. Вы сдаёте куртку, вам дают номерок 65. Гардеробщица не хранит у себя в голове вашу куртку, она хранит номер. По номеру находит куртку. Или как в школе: у каждого ученика в журнале есть номер. Учитель говорит «номер 7 к доске», и все знают, кто это.
Самая знаменитая такая таблица называется ASCII, читается «аски». Её придумали в Америке в 1963 году. В ней 128 знаков: английские буквы, большие и маленькие, цифры, знаки препинания, пробел и несколько служебных знаков. 128 вариантов, сколько это бит? Семь. Тогда экономили каждый бит.
В этой таблице латинская большая буква A имеет номер 65. Это написано у вас на сайте. 65 в двоичном коде это 01000001. Давайте проверим по весам: 64 плюс 1. Шестьдесят пять. Сошлось.
- A = 65 =
01000001 - B = 66 =
01000010 - C = 67 =
01000011
Дальше по порядку: B это 66, C это 67, D это 68. Алфавит идёт подряд. А маленькие буквы? Маленькая a это 97. Ровно на 32 больше большой. Пробел, кстати, тоже знак, и у него номер 32. А цифра «0», которую вы набираете на клавиатуре, это не число ноль, а знак с номером 48. Компьютер различает «число пять» и «знак пять», который нарисован на экране.
Так что, когда вы печатаете сообщение, на самом деле отправляются числа. Вы набираете «Hi», а по сети летят два числа: 72 и 105. А на самом деле, конечно, ещё глубже: летят нули и единицы. 01001000 01101001. Телефон друга получает эти биты, смотрит в ту же таблицу и рисует буквы «Hi».
01001000 01101001. Пусть класс переведёт каждый байт в число по весам (72 и 105), а потом вы скажете, что 72 это H, а 105 это i. Получается «Hi», «привет».Если A это 65, B это 66, то какое слово записано числами 67, 65, 66?
Ожидаемый ответ: CAB. По-английски это «такси». Можно дать ещё 66, 65, 68 (BAD) или 68, 65, 68 (DAD, «папа»).
Для старших: одним битом из большой буквы сделать маленькую
Посмотрите внимательно: A = 65 = 01000001, a = 97 = 01100001. Разница ровно 32, а 32 это вес шестого бита справа. То есть большая и маленькая буква отличаются ровно одним битом! Создатели ASCII сделали это нарочно: чтобы перевести текст в верхний регистр, достаточно выключить один бит у каждой буквы. Старые компьютеры так и делали, это было очень быстро. Похожая хитрость с цифрами: знак «0» имеет номер 48, то есть 00110000, а знак «5» имеет номер 53, 00110101. Правые четыре бита у знака цифры равны самой цифре.
А как же русские и казахские буквы
Хороший вопрос. В таблице ASCII всего 128 знаков, и там только английские буквы. А где русские? Где казахские буквы ә, ғ, қ, ң, ө, ұ, ү, һ, і? А китайские иероглифы, а японские, а арабские?
Долгое время каждая страна придумывала свою таблицу. Для русского языка было несколько разных таблиц, например «Windows-1251» и «КОИ-8». И если письмо написали в одной таблице, а открыли в другой, то вместо текста получалась каша из странных символов. Это называли «кракозябры». Ваши родители точно их помнят: открываешь файл, а там «Ïðèâåò» вместо «Привет». Буквы те же номера, а таблица другая, и номер показывает не ту букву.
Почему появлялись «кракозябры»? Что пошло не так?
Ожидаемый ответ: файл записали по одной таблице, а прочитали по другой. Номера правильные, а смысл у номеров другой. Как если бы номерок из одного гардероба отдали в другой.
Тогда люди договорились сделать одну огромную таблицу на весь мир. Она называется Юникод, по-английски Unicode. В ней сейчас уже примерно 150 тысяч знаков: все алфавиты мира, математические знаки, древние письменности, и даже смайлики. Русская большая буква А в Юникоде имеет номер 1040. Казахская буква ә имеет номер 1241. А смайлик, который плачет от смеха, имеет номер 128 514. Да, смайлики тоже числа! Когда вы отправляете другу смеющийся смайлик, вы отправляете ему число 128 514.
Такие большие номера уже не влезают в один байт. В один байт влезает только до 255. Поэтому английская буква занимает один байт, русская или казахская буква обычно два байта, а смайлик целых четыре. Так что сообщение «привет» по-русски весит в два раза больше, чем «hello» по-английски, хотя букв почти столько же.
Вы это, кстати, могли видеть на старых SMS. Одна SMS латиницей вмещает 160 символов, а кириллицей только 70. Потому что для русских букв нужно больше бит на каждый знак, и в ту же SMS влезает меньше. Ваши родители, когда писали SMS, иногда специально писали транслитом, «privet, kak dela», чтобы влезло в одну SMS и не платить за две.
Для старших: как устроен UTF-8
Юникод это сама таблица номеров. А UTF-8 это способ записать эти номера байтами. Он хитрый: знаки с номерами до 127 (то есть весь старый ASCII) пишутся одним байтом, как раньше. Поэтому старые английские тексты остались правильными и в новой системе. Знаки с большими номерами пишутся двумя, тремя или четырьмя байтами, и по первым битам каждого байта понятно, сколько байтов у знака. Например, первый байт двухбайтового знака начинается с битов 110, а продолжение всегда с битов 10. Так что, даже если начать читать с середины, легко найти начало следующего знака. Сейчас больше 95% сайтов в интернете используют UTF-8.
И вообще, это главная мысль: внутри компьютера всё числа. Буква это число. Цвет пикселя это числа. Звук это числа: громкость звука, измеренная много тысяч раз в секунду. Видео это много картинок, а картинки это числа. Мы в четвёртом месяце подробно разберём, как из чисел получается картинка. А пока запомните: всё, что есть в вашем телефоне, это числа, а числа это биты.
Картинка из битов
Я сказал, что картинки это тоже числа. Давайте сделаем одну прямо сейчас, самую простую. Возьмём сетку 8 на 8 клеточек. Каждая клеточка это бит: 1 значит закрасить, 0 значит оставить пустой. Каждая строка это ровно один байт.
0011110001000010101001011000000110100101100110010100001000111100
Смотрите, что получилось. Смайлик! Восемь байтов, шестьдесят четыре бита, и вот вам картинка. Ровно так рисовали значки и буквы на экранах старых компьютеров и в первых видеоиграх. Каждая буква на экране старого компьютера была вот такой маленькой сеткой из байтов. А современная фотография это та же идея, только клеточек миллионы, и у каждой не один бит, а три байта цвета. Подробно разберём это в четвёртом месяце.
Сколько байт занимает наш смайлик? А если бы у каждой клеточки был цвет в три байта?
Ожидаемый ответ: 8 байт. С цветом: 64 клеточки × 3 байта = 192 байта.
Единицы измерения: килобайты, мегабайты, гигабайты
Один байт это одна английская буква. Это очень мало. Ваша фотка, песня, игра занимают миллионы и миллиарды байтов. Говорить «у меня фото на три миллиона сто сорок тысяч байт» неудобно. Поэтому, как с метрами и километрами, придумали большие единицы.
- 8 бит = 1 байт
- 1024 байта = 1 килобайт (КБ)
- 1024 КБ = 1 мегабайт (МБ)
- 1024 МБ = 1 гигабайт (ГБ)
- 1024 ГБ = 1 терабайт (ТБ)
Смотрите на лесенку. Внизу бит. Восемь бит это байт. А дальше каждая следующая ступенька в 1024 раза больше предыдущей. 1024 байта это килобайт. 1024 килобайта это мегабайт. 1024 мегабайта это гигабайт. 1024 гигабайта это терабайт.
Стоп. А почему 1024? Ведь в обычной жизни «кило» значит тысяча. Килограмм это 1000 граммов, километр это 1000 метров. А тут 1024. Кто догадается, почему?
Почему в килобайте 1024 байта, а не 1000? Подсказка: вспомните таблицу удвоения.
Ожидаемый ответ: потому что 1024 это 2 в десятой степени, круглое число для компьютера. 1000 в двоичном коде некруглое, а 1024 это единица и десять нулей: 10000000000.
Правильно! Помните, мы удваивали: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024. Десятое удвоение даёт 1024. Это 2 в десятой степени. Для компьютера это круглое число, как для нас 1000. В двоичном коде 1024 записывается как единица и десять нулей. А 1000 в двоичном коде выглядит некрасиво: 1111101000. Ну а 1024 очень близко к 1000, всего на 24 больше. Поэтому первые программисты сказали: давайте называть 1024 байта «кило». Почти тысяча, и для компьютера удобно.
Сколько килобайт в 2 мегабайтах? А в 3? А в 4?
Ожидаемый ответ: 2048, 3072, 4096. Умножаем на 1024. Подсказка для младших: 1024 + 1024 = 2048, и ещё 1024 будет 3072.
Что больше: 1 гигабайт или 1000 мегабайт?
Ожидаемый ответ: 1 гигабайт, потому что в нём 1024 мегабайта, а это больше 1000. Это вопрос из босса, неправильные варианты «1000 МБ», «одинаково» и «нельзя сравнить».
Сколько что весит
Чтобы эти единицы стали понятнее, давайте почувствуем, сколько весят разные вещи. Числа примерные, потому что всё зависит от качества.
- Одна английская буква: 1 байт.
- Сообщение в мессенджере на пару строк: примерно сто байт, ну пара сотен.
- Страница текста в книге: примерно 2 килобайта, если английский, и примерно 4, если русский.
- Вся книга «Гарри Поттер и философский камень» в виде простого текста: примерно полмегабайта.
- Фотография с телефона: примерно от 2 до 5 мегабайт.
- Песня в MP3: примерно от 3 до 10 мегабайт.
- Минута видео в TikTok или Reels: примерно от 10 до 30 мегабайт.
- Фильм в хорошем качестве: примерно от 2 до 5 гигабайт.
- Minecraft Java Edition: несколько сотен мегабайт, ну, без модов.
- Большие современные игры, вроде GTA V или Call of Duty: сотни гигабайт, часто больше 100.
У вас телефон на 128 гигабайт. Сколько примерно фотографий по 4 мегабайта туда поместится, если ничего больше не хранить?
Ожидаемый ответ: 128 ГБ это 128 × 1024 = 131 072 МБ. Делим на 4, получается примерно 32 тысячи фото. Младшим можно округлить: в гигабайте примерно 1000 МБ, значит, 128 000 : 4 = 32 000. На деле меньше, потому что место занимает система и приложения.
Видите, книга про Гарри Поттера весит меньше одной фотки с телефона. Текст очень лёгкий. Буква это всего один или два байта. А на фотке миллионы пикселей, и у каждого пикселя три числа: сколько в нём красного, зелёного и синего. Поэтому фото тяжелее книги. А видео это много фото в секунду, поэтому оно ещё тяжелее.
Возвращаемся к планке памяти
Помните планку оперативной памяти, которую мы передавали по кругу? Там было написано, например, 2 гигабайта. Давайте посчитаем, сколько это битов. 2 гигабайта это 2 × 1024 мегабайт, каждый мегабайт это 1024 килобайта, каждый килобайт это 1024 байта, и каждый байт это 8 бит.
Семнадцать миллиардов бит! Это больше, чем людей на Земле, в два раза. Я в первой теории говорил, что так будет. И каждый из этих битов хранится в своей крошечной ячейке на этой маленькой планочке. А у ваших игровых компьютеров памяти 16 гигабайт, это в восемь раз больше: примерно 137 миллиардов бит.
Почему флешка на 64 ГБ показывает 59
А теперь детективная история. Кто-нибудь покупал флешку или карту памяти, втыкал в компьютер и видел, что места меньше, чем написано на упаковке? Написано 64 гигабайта, а Windows показывает примерно 59. Кто-то думает, что флешка бракованная. Кто-то думает, что магазин обманул. Кто-то думает, что там вирусы съели место. Всё неправильно. Это вопрос из босса, слушайте внимательно.
Всё дело в той самой разнице между 1000 и 1024. Производители флешек и дисков считают по-простому, как в магазине: гигабайт это миллиард байт, 1 000 000 000. Просто тысяча, тысяча и тысяча. А Windows считает по-компьютерному: гигабайт это 1024 × 1024 × 1024, это 1 073 741 824 байта. Почти на 74 миллиона больше!
Теперь считаем. На флешке на самом деле 64 миллиарда байт, 64 000 000 000. Производитель делит на миллиард и пишет «64 ГБ». Честно. А Windows делит на 1 073 741 824 и получает примерно 59,6. И показывает «59,6 ГБ». Тоже честно. Байтов на флешке одинаково, просто «гигабайт» у них разной длины. Это как если бы один человек мерил в обычных метрах, а другой в «метрах» длиной 107 сантиметров. Расстояние одно и то же, а числа получаются разные.
Чем больше устройство, тем больше разница. На жёстком диске на 1 терабайт Windows покажет примерно 931 гигабайт. Куда делись почти 70 гигабайт? Никуда, их и не было в «компьютерных» гигабайтах. Опять разница в счёте.
Почему флешка на 64 ГБ показывает около 59 ГБ?
Ожидаемый ответ: потому что производитель считает гигабайт как 1000 × 1000 × 1000 байт, а Windows как 1024 × 1024 × 1024. Никто не обманул.
Для старших: кибибайты и мебибайты
Путаница с 1000 и 1024 надоела всем, и в 1998 году международная комиссия по электротехнике предложила разделить названия. Килобайт (kB) по правилам системы СИ это ровно 1000 байт. А 1024 байта должны называться кибибайт (KiB), от слов «кило» и «бинарный». Дальше мебибайт (MiB), гибибайт (GiB), тебибайт (TiB). Так что, строго говоря, флешка на 64 ГБ это 64 гигабайта, а Windows показывает 59,6 гибибайта, но пишет буквы ГБ. Linux и macOS часто пишут правильно: например, macOS уже давно считает в тысячах, поэтому там флешка покажет почти 64 ГБ. В нашем курсе мы, как и сайт, считаем килобайт за 1024: так считает Windows, и так проще для двоичного мира.
Смешной исторический факт: дискета, на которой было написано «1,44 МБ», на самом деле вмещала 1440 × 1024 байта. То есть «мегабайт» там был длиной 1000 × 1024 байта, ни туда ни сюда. Путаница с единицами началась очень давно.
Сколько данных в мире
А теперь давайте выйдем за пределы одного телефона. Терабайт, это последняя ступенька на нашей лесенке. Но лесенка не заканчивается. После терабайта идёт петабайт, это 1024 терабайта. Потом эксабайт, потом зеттабайт. Каждый раз в 1024 раза больше.
Где бывают петабайты? В дата-центрах, огромных зданиях, где стоят тысячи серверов. Например, на YouTube каждую минуту загружают сотни часов нового видео. Это несколько полнометражных фильмов каждую секунду, и всё это нужно где-то хранить. Хранят на миллионах дисков, и счёт идёт на эксабайты. А всё, что человечество создаёт за год, все фото, видео, переписки, по разным оценкам, уже измеряется больше чем сотней зеттабайт, и это число растёт каждый год.
Если представить, что каждый бит это одна песчинка, на что будет похож один гигабайт?
Ожидаемый ответ: гигабайт это примерно 8,6 миллиарда бит. Песчинка примерно миллиметр, значит, это примерно ведро или пара вёдер мелкого песка. А терабайт уже грузовик. Числа очень примерные, главное ощущение масштаба.
И всё это, все эксабайты и зеттабайты, состоит из тех самых двух состояний. Ток есть, тока нет. Из этих простейших кирпичиков построен весь цифровой мир.
Мегабиты и мегабайты: скорость интернета
И ещё одна ловушка, с которой вы точно встречались, хотя, может, и не замечали. Скорость интернета. Казахтелеком или другой провайдер обещает дома интернет на 100 мегабит в секунду. Вы качаете игру, а Steam показывает скорость примерно 12 мегабайт в секунду. Где ещё 88? Обманули?
Нет. Смотрите внимательно на слова. Провайдер пишет «мегаБИТ». А Steam пишет «мегаБАЙТ». А в байте сколько бит? Восемь. Значит, 100 мегабит в секунду делим на 8, получаем 12,5 мегабайт в секунду. Всё сходится. Провайдеры считают в битах, потому что по проводу данные бегут по одному биту, а программы считают в байтах, потому что файлы хранятся байтами.
Тариф 200 мегабит в секунду. Сколько примерно мегабайт в секунду покажет программа загрузки?
Ожидаемый ответ: 200 : 8 = 25 мегабайт в секунду. На деле чуть меньше, часть скорости уходит на служебные данные.
Маленькая подсказка, как не путать: маленькая буква «б» или «b» в сокращении обычно значит бит, большая «Б» или «B» значит байт. Мбит/с, Mbps это мегабиты. МБ/с, MB/s это мегабайты. Разница в восемь раз.
Шестнадцатеричный код, HEX
Последняя тема урока. Помните, на «Пульте байта» справа было слово HEX и странные буквы? Сейчас разгадаем.
Попробуйте прочитать вслух вот это число.
1101011010110010. Попросите кого-нибудь прочитать его вслух и запомнить. Обычно сбиваются на середине.Один, один, ноль, один, ноль... Сбились? И я бы сбился. Длинные ряды нулей и единиц читать очень неудобно. Глаза разбегаются, легко пропустить цифру. А программистам приходится смотреть на такие числа каждый день. Поэтому они придумали хитрость.
Хитрость такая. Делим байт на две половинки по 4 бита. Помните, половинка байта называется полубайт. А каждые 4 бита записываем одним знаком. Сколько вариантов у четырёх бит? Шестнадцать. От 0000 до 1111, то есть от 0 до 15. Значит, нам нужно шестнадцать разных знаков. Отсюда название: шестнадцатеричная система, по-английски hexadecimal, коротко HEX.
Но вот проблема. Цифр у нас только десять: от 0 до 9. А нужно шестнадцать знаков. Где взять ещё шесть? Программисты не стали придумывать новые закорючки и просто взяли буквы. После 9 идут буквы: A, B, C, D, E, F.
- 0 = 0000, 1 = 0001, 2 = 0010, 3 = 0011
- 4 = 0100, 5 = 0101, 6 = 0110, 7 = 0111
- 8 = 1000, 9 = 1001, A (10) = 1010, B (11) = 1011
- C (12) = 1100, D (13) = 1101, E (14) = 1110, F (15) = 1111
Запомните: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15. То есть в HEX буква это не буква, а цифра. Просто цифра больше девяти. A это десять, F это пятнадцать. Самая большая цифра HEX это F, пятнадцать. Как в обычной системе самая большая цифра 9.
Что идёт после 9 в HEX?
Ожидаемый ответ: A. Не 10 и не G. После F уже ничего нет, как после 9 в обычной системе: дальше начинается «10».
Какое число означает буква F в HEX? А буква C?
Ожидаемый ответ: F = 15, C = 12. Частая ошибка: F = 16. Напомните, что счёт идёт с нуля, поэтому 16 вариантов это от 0 до 15.
Чтобы запомнить буквы, есть простой способ. Посчитайте на пальцах: A первая буква, это 10. B вторая, 11. И так далее до F, шестой буквы, это 15. Или запомните одно: F это пятнадцать, «фифтин». И отсчитывайте назад.
Как переводить байт в HEX
Теперь самое интересное. Берём байт, восемь бит. Делим пополам: левые четыре бита и правые четыре бита. Каждую половинку переводим в один знак HEX по таблице. Получается два знака. Значит, один байт в HEX записывается ровно двумя знаками. Это вопрос из босса.
Пример с сайта: 1111 0000. Левая половинка 1111, это 15, это F. Правая половинка 0000, это 0. Итого F0.
Второй пример: 0010 1010. Левая половинка 0010, это 2. Правая 1010, это 8 плюс 2, десять, это A. Итого 2A.
1111 1111= FF0000 1010= 0A1100 1011= CB0100 0001= 41 (это буква A, номер 65!)
Видите, как удобно. Вместо восьми цифр две. Вместо 11111111 пишем FF. А тот длинный ряд, который вы не смогли прочитать, 1101 0110 1011 0010, в HEX это D6B2. Четыре знака вместо шестнадцати. Это и правда легче.
Сколько знаков HEX нужно, чтобы записать один байт?
Ожидаемый ответ: два. Байт это две половинки по 4 бита, каждая половинка это один знак. Неправильные варианты в боссе: 1, 4, 8.
А теперь вернитесь на телефоне к «Пульту байта» во второй теории. Там справа есть HEX. Наберите 255, будет FF. Наберите 15, будет 0F. Наберите 16, будет 10. Смотрите: в HEX «10» это шестнадцать! Как в двоичном «10» это два. В любой системе «10» значит «одна полная пачка и ноль сверху». В обычной пачка из десяти, в двоичной из двух, в шестнадцатеричной из шестнадцати.
Для старших: как программисты пишут HEX и шутят им
Чтобы не путать HEX с обычными числами, перед ним часто ставят 0x. Например, 0x10 это 16, а 0xFF это 255. Ещё бывает знак решётки #, как в цветах, или буква h в конце. Если у вас когда-нибудь вылетал синий экран Windows, там тоже бывают коды ошибок в HEX, вроде 0x0000007B.
Программисты любят составлять из букв от A до F слова. Например, 0xDEADBEEF («мёртвая говядина») часто пишут в память, чтобы сразу увидеть, где программа взяла неинициализированные данные. А 0xCAFEBABE («кафе бейб») стоит в самом начале каждого скомпилированного файла языка Java, по этим байтам компьютер узнаёт, что это за файл.
Почему HEX, а не, например, восьмеричная система? Восьмеричная тоже бывает, там каждые 3 бита пишут одной цифрой от 0 до 7. Но байт из 8 бит не делится на 3 ровно, а на 4 делится. Поэтому для байтов HEX удобнее всего: ровно два знака на байт.
Где встречается HEX
HEX вокруг вас повсюду, просто вы не знали, что это он. Самое известное: цвета на сайтах. Кто когда-нибудь выбирал цвет ника в Discord, цвет в Paint или в редакторе видео? Там часто есть поле с решёткой и шестью знаками. Например #FF0000.
Как это читать? Цвет на экране складывается из трёх лучей: красного, зелёного и синего. По-английски Red, Green, Blue, коротко RGB. Для каждого луча один байт, от 0 до 255. Значит, три байта. Каждый байт в HEX это два знака. Итого шесть знаков. Первые два это красный, следующие два зелёный, последние два синий.
# FF 00 00 и подпишите над парами: красный, зелёный, синий. Затем: #00FF00 зелёный, #0000FF синий, #000000 чёрный, #FFFFFF белый, #FFFF00 жёлтый.#FF0000: красный на полную, FF, это 255. Зелёный ноль. Синий ноль. Получается чистый красный цвет. Про это как раз говорит Бит на сайте, прочитайте.
А что будет, если все три луча выключить, #000000? Темнота, чёрный. А если все три на полную, #FFFFFF? Белый. Потому что белый свет на экране это смесь красного, зелёного и синего. Возьмите лупу или камеру телефона с зумом и посмотрите вблизи на белый экран: увидите крошечные красные, зелёные и синие точки. А красный плюс зелёный, #FFFF00, даёт жёлтый. Это удивляет, потому что в красках так не бывает, но со светом бывает именно так.
Как в HEX записывают красный цвет на сайтах?
Ожидаемый ответ: #FF0000. Неправильные варианты в боссе: #000000 (чёрный), #00FF00 (зелёный), #RED (такого кода нет, R не цифра HEX).
Сколько разных цветов можно записать таким кодом из трёх байтов?
Ожидаемый ответ (для старших): 256 × 256 × 256 = 16 777 216, примерно 16,7 миллиона цветов. Это 24 бита, 2 в 24-й степени.
Цвета мы подробно будем проходить в четвёртом месяце, на уроке про RGB и HEX. Там вы будете сами подбирать цвета для сайта. А сейчас запомните главное: шесть знаков после решётки это три байта, по одному на каждый цвет.
Где ещё бывает HEX? У каждого сетевого устройства, у телефона, у ноутбука, у Wi-Fi-адаптера, есть уникальный номер, MAC-адрес. Он выглядит вот так: 3C:5A:B4:01:9F:2E. Шесть байт в HEX. Мы про него поговорим в пятом месяце. А ещё HEX видно в кодах ошибок, в адресах памяти, в специальных программах, где можно посмотреть файл «как есть», байт за байтом. Такие программы так и называются: HEX-редакторы. Кстати, с их помощью раньше «взламывали» сохранения в играх: открывали файл сохранения, находили байт с количеством денег и меняли его на FF. И становились богачами. Но только в одиночной игре на своём компьютере, в онлайн-играх данные хранятся на сервере и так не получится.
Для старших: как переводить HEX в обычное число
В HEX каждая позиция весит в 16 раз больше соседней: справа налево 1, 16, 256, 4096. Значит, 2A это 2 × 16 + 10 × 1 = 42. А FF это 15 × 16 + 15 = 255. 41 это 4 × 16 + 1 = 65, буква A. Можно и через двоичный код: перевести каждый знак в четыре бита и сложить веса. Оба способа дают один ответ, выбирайте удобный.
Как выглядит файл изнутри
Ещё одна интересная вещь. Любой файл на компьютере, фото, песня, игра, это просто длинный ряд байтов. И у многих файлов в самом начале стоит «подпись», несколько особых байтов, по которым компьютер узнаёт, что это за файл. Например, любая картинка в формате PNG начинается с байтов, которые в HEX выглядят так: 89 50 4E 47. Если перевести три последних числа по таблице ASCII, получится 80, 78, 71, это буквы P, N, G. Файл буквально подписан своим именем.
А файл программы для Windows, тот, что с расширением .exe, начинается с двух букв MZ. Это инициалы инженера Microsoft Марка Збиковски, который придумал этот формат в восьмидесятых. Уже несколько десятилетий каждая программа для Windows начинается с инициалов одного человека.
Типичные вопросы детей
«Зачем вообще HEX, если компьютер всё равно хранит нули и единицы?»
Ответ: HEX нужен не компьютеру, а людям. Компьютеру всё равно. А человеку проще прочитать FF, чем 11111111. Это просто удобная запись для глаз.
«А если в HEX написано AB, это не слово?»
Ответ: нет, это число 171: A это 10, умножить на 16, плюс B, 11. Буквы в HEX это цифры. Но можно специально подбирать числа, похожие на слова, программисты так шутят.
«Почему мой телефон на 128 ГБ, а свободно только 100?»
Ответ: две причины. Первая: та же разница 1000 и 1024, но телефоны часто уже считают в тысячах, тогда она пропадает. Вторая и главная: место занимает сама система Android или iOS, примерно от 10 до 20 ГБ, и предустановленные программы.
Мини-викторина перед боссом
Сколько бит в байте? Сколько вариантов у байта? Какое самое большое число в байте?
Ожидаемый ответ: 8, 256, 255.
Как компьютер хранит буквы? Какой номер у латинской A?
Ожидаемый ответ: как числа по таблице. A это 65.
Сколько байт в килобайте? Что больше: 1 ГБ или 1000 МБ?
Ожидаемый ответ: 1024. 1 ГБ больше.
Что значит F в HEX? Сколько знаков HEX на байт? Какой цвет #FF0000?
Ожидаемый ответ: 15, два знака, красный.
Босс: Повелитель байтов
Ну что, айтишники, пришло время финальной битвы. Босс урока называется «Повелитель байтов». Это викторина из десяти вопросов про всё, что мы сегодня прошли: биты, байты, буквы, HEX и гигабайты. На каждый вопрос есть время. У вас пять жизней, так что одна ошибка не страшна. Но если жизни кончатся, придётся начинать заново.
Вопросы у всех случайные и в случайном порядке. Часть вопросов вообще генерируется на ходу, с разными числами. Так что подглядывать к соседу бесполезно: у него будет другой вопрос. Если не знаете ответ, не тыкайте наугад: подумайте, вспомните доску. Всё, что спросит босс, мы сегодня обсуждали, и многое до сих пор написано на доске.
И важно: после каждого ответа босс показывает объяснение, почему правильно именно так. Читайте эти объяснения, даже если ответили верно. Это бесплатная повторялка.
За чем следить:
- Кто проиграл, пусть сразу начинает снова. Подходите к ним в первую очередь и спрашивайте, на каком вопросе ошиблись.
- Если кто-то прошёл очень быстро, попросите его не рассказывать ответы соседям, а лучше пройти второй раз на лучший результат.
- Следите за временем: если к концу 15 минут кто-то ещё не прошёл, можно дать пройти дома, но для пароля урока важно, чтобы большинство класса победило.
Разбор ошибок после босса
- «Самое большое число в байте 256». Нет, 255. Вариантов 256, но первый из них ноль. 11111111 = 255.
- «В килобайте 1000 байт». По счёту Windows 1024, потому что это 2 в десятой степени. Тысяча бывает у производителей дисков, и отсюда же история с флешкой.
- «Сколько КБ в 3 МБ? Ответил 3000». Нужно 3 × 1024 = 3072. Умножаем не на тысячу, а на 1024.
- «4 бита дают 8 вариантов». Нет, каждый бит удваивает: 2, 4, 8, 16. Четыре бита дают 16. Не умножаем количество бит на два, а двойку умножаем саму на себя столько раз, сколько бит.
- «1 ГБ и 1000 МБ одинаково». Нет, в гигабайте 1024 мегабайта, это больше тысячи.
- «F в HEX это 16». Нет, 15. HEX идёт от 0 до F, это 16 знаков, но самый большой из них 15.
- «Буквы хранятся как картинки». Нет, как числа по таблице. Картинка буквы рисуется только при показе на экране.
- «10 в двоичном это 10». Нет, это 2. Вот вам и мем.
Кто победил босса, поздравляю. Вы теперь официально понимаете язык компьютера. Это больше, чем знает большинство взрослых, которые каждый день сидят за компьютером.
Итоги, ДЗ и пароль
Друзья, давайте подведём итоги. Помните, как начинался урок? Вы смотрели на мем про 10 типов людей и не понимали, где ещё восемь типов. А теперь? Посмотрите на угол доски. 10 = 2. Теперь каждый из вас может прочитать этот мем и посмеяться. Я же обещал, что к концу урока будет смешно.
Пять главных мыслей урока
Запомните пять вещей. Если запомните только их, урок прошёл не зря. Они же написаны у вас на сайте в блоке «Коротко».
- Бит хранит 0 или 1, как выключатель. Внутри процессора миллиарды транзисторов, крошечных выключателей. Ток есть, это 1. Тока нет, это 0. Два состояния выбрали потому, что их легко различить даже при шуме.
- Каждый новый бит удваивает число вариантов. 1 бит даёт 2, 2 бита дают 4, 3 бита дают 8, и так далее.
- Веса битов справа налево: 1, 2, 4, 8, 16, 32, 64, 128. Чтобы прочитать двоичное число, складываем веса там, где стоит 1. 1101 это 8 + 4 + 1 = 13.
- 8 бит = 1 байт = 256 вариантов, от 0 до 255. Буквы хранятся как числа: латинская A это 65. А 1024 байта это килобайт, 1024 килобайта это мегабайт, и дальше по лесенке.
- HEX записывает каждые 4 бита одним знаком от 0 до F. A = 10, F = 15. Один байт это два знака HEX. #FF0000 это красный.
Последний быстрый опрос, по кругу, каждый говорит одно: что вам сегодня запомнилось больше всего?
Ожидаемый ответ: что угодно. Обычно называют живой байт, флешку на 59 ГБ, счёт на пальцах, Pac-Man. Это хороший сигнал, какие истории сработали, запомните их для следующих групп.
Домашнее задание
Теперь про домашку. Откройте на сайте блок «Дома». Он откроется у вас, когда вы победите босса. Там две вещи.
Первое: сыграйте ещё раз во все три игры урока. Задания каждый раз новые, так что это не скучно. Особенно тем, кто сегодня победил босса не с первого раза. Цель: пройти каждую игру без ошибок.
Второе: заполните домашнее задание по ссылке на сайте. Делайте его сами, без подсказок, без старших братьев и без нейросетей. Так вы заработаете XP честно. А если что-то не понятно, это нормально, напишите, что не поняли, и мы разберём в начале следующего урока.
И бонус по желанию. Дома потренируйтесь считать на пальцах одной руки от 0 до 31. И попробуйте написать своё имя латинскими буквами двоичным кодом по таблице ASCII: A это 65, B 66 и дальше по алфавиту. Принесите на бумажке, на следующем уроке посмотрим, кто сможет прочитать.
Что будет в следующий раз
На следующем уроке мы снова возьмём в руки процессор и оперативную память. Но теперь вы уже знаете, что внутри них биты. И мы разберёмся, как процессор этими битами думает, а память их хранит, и как всё это соединяет материнская плата. Мозг и память компьютера. Будет интересно.
Пароль урока
И последнее. Как всегда, в конце урока я говорю пароль. Он открывает этот урок на сайте для тех, кто сегодня пропустил или захочет пройти всё заново дома. Слушайте внимательно и запишите.
Всё, спасибо всем, вы сегодня отлично поработали. Бит Байт гордится вами. Он, правда, сейчас в состоянии «сплю», но гордится во сне. До встречи через неделю!