Степени двойки

Материал из Posmotre.li
Перейти к: навигация, поиск
Склифосовский.pngВкратце
От 0 до 255. Или от −128 до 127.
« Чем отличается начинающий программист от законченного? Начинающий думает, что в килобайте 1000 байт, законченный — что в километре 1024 метра »
— Народное творчество

1. 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024. 2048. 4096. 8192. 16384. 32768. 65536. А вы сколько чисел из этого ряда можете вспомнить? Автор этой статьи вспомнил 17. А профессиональный айтишник досчитает как минимум до двоичного миллиона (того самого, который «мега» в мегабайтах).

Так уж сложилось, что все компьютеры работают в двоичной системе (предлагались и троичные компьютеры[1], и даже десятичные[2], но они не взлетели). Поэтому для любой компьютерной программы, в том числе и видеоигры, степени двойки — настолько же естественные и важные числа, насколько для нас степени десятки (1, 10, 100, и т. д.).

Казалось бы, эти числа важны только для программистов, а геймеру знать о них необязательно? Но нет, то тут, то там в видеоиграх эти числа всплывают. Или явно (например, как пределы какого-то переменного параметра, например скорости в космосиме), или скрыто, в виде багов (например, знаменитый баг «сумасшедший Ганди» в первой Civilization). Любая переменная величина в памяти компьютера ограничена именно этими числами. Если переменная может принимать только положительные значения и нуль, то ее пределы — от 0 до степени двойки минус 1 (например, 255, 65535). Если и отрицательные, то от отрицательной степени двойки до той же, но положительной степени двойки минус 1 (например, от −128 до 127). И если поверх этих ограничений не наложены какие-то, более естественные для человека (скажем, максимум патронов для пулемёта — не 255, а 200), то именно этими числами и будет ограничена переменная.

А что будет, если переменная превысит свои пределы? Будет переполнение: 255 превратится в 0 (или наоборот, 0 в 255). Персонаж, подвергшийся переполнению, будет вести себя дико, примеры см. ниже.

Содержание

Примеры

Как ограничение

Как ошибка

Примечания

  1. Например, ЭВМ «Сетунь», для своего времени вполне передовая машина. В XXI веке к идее изредка возвращаются, предпринимая в рамках университетских курсов попытки разработать небольшие и качественные полупроводниковые троичные логические элементы.
  2. Например, именно десятичным был американский Mark I, который часто называют «первым в мире программируемым компьютером» (более ранние — и более совершенные! — машины Конрада Цузе «политкорректно» забываются, поскольку они были созданы в гитлеровской Германии).
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты