Почему два дополнения?

Я пишу учебник, чтобы научить детей (от 9 до 13 лет) программированию. Я начал с самих компьютеров, они не имеют большого отношения к информатике, это больше касается процесса, связанного с решением вычислительной проблемы.

С этой отправной точки я веду их к пониманию того, что машины могут помочь нам с некоторыми вычислительными проблемами. Люди хороши в абстрактном мышлении и воображении, но компьютеры УДИВИТЕЛЬНО следуют четко определенному распорядку. Они могут делать это снова и снова, с поразительной скоростью!

Представление чисел в двоичном формате уже рассматривалось в моем руководстве. Но как представить отрицательные числа? Есть так много способов сделать это в любой системе счисления, но система, выбранная для компьютеров, имеет очень конкретную причину: уменьшить количество оборудования, связанного с добавлением целочисленных значений со знаком. Мы не хотим конструировать и строить отдельные чипы только для обработки отрицательных чисел, мы хотим использовать те же самые чипы, которые мы использовали для арифметики натуральных чисел!

Если бы кто-то спросил вас на улице (что совершенно нереально, как это кажется) «как компьютеры представляют отрицательные числа и почему они представляют их таким образом?»

Мои конкретные вопросы:

  1. Как компьютеры представляют отрицательные числа?

  2. Почему компьютеры представляют отрицательные числа таким образом?

Я полагаю, что многим опытным разработчикам придется немного подумать об этом. Некоторые могут даже не придумать ответа. Я не пытаюсь быть напыщенным, это из реального опыта, я задавал этот вопрос профессиональным разработчикам, и они не могут на него ответить. Они смотрят пустым взглядом. Дайте им JBoss и JavaBeans, и они завоюют вас уверенно. Так смешно! Я тоже борюсь с этим вопросом, мне приходится каждый раз напоминать себе ответы, и мне нужен лист бумаги или белая доска, чтобы найти решение. Я надеюсь, что это поможет студентам лучше понять машину, с которой они работают.

14
задан dvanaria 28 July 2011 в 02:49
поделиться