Я пишу учебник для обучения детей (от 9 до 13 лет) о программировании. Я начал с самих компьютеров, у них не так много общего с информатикой, это больше связано с процессом, связанным с решением вычислительной проблемы.
С этой отправной точкой я направляю их к пониманию того, что машины могут помочь нам с определенными вычислительными проблемами. Люди отлично справляются с абстрактным мышлением и воображением, но компьютеры УДИВИТЕЛЬНЫ при соблюдении четко определенной процедуры. Они могут делать это снова и снова, с невероятной скоростью!
Представление чисел в двоичном формате уже описано в моем учебнике. Но как вы представляете отрицательные числа? Существует так много способов сделать это в любой нотной системе, но система, выбранная для компьютеров, имеет очень специфическую причину: уменьшить количество механизмов, связанных с добавлением знаковых целочисленных значений. Мы не хотим создавать и создавать отдельные чипы только для обработки отрицательных чисел, мы хотим использовать те же чипы, которые мы использовали для арифметики натуральных чисел!
Если кто-то спросил вас на улице (как это совершенно нереально, как кажется) "как компьютеры представляют собой отрицательные числа и почему они представляют их таким образом?"
Мои конкретные вопросы:
Как компьютеры представляют отрицательные числа?
Почему компьютеры представляют отрицательные числа таким образом?
Я бы предположил, что многим опытным разработчикам придется немного подумать об этом. Некоторые могут даже не придумать ответа. Я не пытаюсь быть помпезным, это из реального опыта, я задал профессиональным разработчикам этот вопрос, и они не могут ответить на него. Они рисуют пустой взгляд. Дайте им JBoss и JavaBeans, и они будут парировать вас с уверенностью. Настолько смешно! Я тоже борюсь с этим вопросом, я должен каждый раз напоминать себе об ответах, и мне нужен лист бумаги или белая доска для разработки решения. Я надеюсь, что это поможет ученикам лучше понять машину, с которой они работают.