Отрицательные числа: дополнительный код

Двадцать пятое вступление объясняет договорённость, на которой держатся все вычитания в компьютере: дополнительный код. Опыт — с восьмью лампами и знаковой суммой.

Опыт: минус на восьми лампах

Лампы показывают только числа от 0 до 255, а показать нужно «минус пять». Договорённость такая: 5 − 10 считается как 5 + (256 − 10) = 251. Соберите на лампах 251 (все, кроме лампы «4») и посмотрите на сумму: она покажет −5. Горящая старшая лампа «128» означает, что число отрицательное, а его значение отсчитывается вниз от 256.

Правило: старший бит — знак

Эта договорённость называется дополнительным кодом. Если старшая лампа горит, число читается как отрицательное: 11111011 — это не 251, а −5. Крайний случай — все восемь ламп горят: 11111111 — это −1. Чтение со знаком: вычтите из 256 значение без знака. Например, 11111100 = 256 − 252 = −4.

Перенос: прочитай знаковое число

На лампах горит 11111100. Без знака это 252, но в вопросе включён знак, поэтому читаем вниз от 256: 256 − 252 = −4. Минус задаёт только старшая лампа, а величину — остальные семь.

Зачем это нужно

На этом уровне процессор научится узнавать «минус»: по горящему старшему биту результата выставляется флаг N (negative), а команда JN прыгает, если минус есть. Так работают проверки «если результат меньше нуля» — без единой новой детали, только договорённость о старшем бите.

Пройти вступление в игре · Гайд уровня 25 · Все вступления