Почему для вас значения левее нуля становятся проблемными?
Вы все время путаете кол-во животных, и шкалу координат. Нет разницы, если на ней будут числа меньше нуля. Эти просто метки, для перемещения вдоль оси координат.
Кол-во животных не может быть задано отрицательным числом, но направление движение по оси координат задается знаками + и -.
Daniel писал(а):Во вторых, можете использовать математикоподобные, стадомодобреннообщепринятые записи, но не переносите свойства таких объектов на природу... если авто тормозит, то нет у авто никакого отрицательного ускорения и т.д., это самое обычное ускорение (замедление), из-за которого меняется скорость авто.
Авто тормозит, потому что атомы в тормозном диске движутся (перемещаются) относительно атомов тормозной колодки, и когда колодка прижимается к поверхности диска, атомы колодки отталкивают от себя атомы диска, с той же силой, что и атомы диска отталкивают от себя атомы колодки, и это отталкивание имеет противоположное направление движению самих атомов.
Два противоположных направления, Daniel. В физике сила связанна с ускорением. Если есть сила отталкивания, то есть и ускорение, направленное против скорости инерции. (Но это мое понимание, с вашим оно не совпадает, я уже понял)
Daniel писал(а):3. Вариантов много, но если Вы поставили точку в центре шара, то где там минусы то нужны? Там будет любой размер и форма и никаких минусов. Нужно поставить точку на прямой? Поставьте точку 1000 на прямой и считайте отклонения от неё (я понимаю, что следующий вопрос будет "а если график уедет за эту 1000", - нужно изначально выбирать область счёта, хотя, опять же, даже если Вы будете с минусами считать, то прирост расстояния не будет никогда отрицательным.
Для того, что бы изобразить окружность, надо как то перемещать карандаш (фломастер, управлять пикселями монитора, и тд). Одна точка у нас установлена, следующая от неё где находится? Алгоритм установки точек какой?
Daniel писал(а):4. В смысле алгоритм калькулятора, Вам интересно как делается счёт "на уровне железа"? На уровне железа он делается согласно правилам математики (да, да тем самым правилам, о которых Степаныч говорит), там есть устройства сумматоры и есть умножители, никаких других - естественно нет. Естественно, результат любых операций выводится как сумма (итоговый счёт), но с понятием суммы и произведения у машин всё нормально (и даже у млекопитающих, сделавших эти машины), не понимаю, почему у "разумных" с этим проблемы.
Что такое "умножитель"?
Вот пример суммирования восьми битных чисел:
00000011 = 3
+
00000110 = 6
-----------
00001001 = 9
То что мы видим на экране числа в десятичном варианте, то это алгоритм отображения, понятный для человека. Машина считает все в бинарном виде. Логика простая - "единица" + "единица" дают "ноль", и устанавливают флажок переполнения (так названо) для следующего бита, который учитывает этот флаг при операции суммирования уже своих "единиц".
Пример операции вычитания:
00000011 = 3 - уменьшаемое
-
00000110 = 6 - вычитаемое
Машина не умеет вычитать, она инвертирует все биты вычитаемого, и суммирует с ним 1
00000110 инверсия создает 11111001, суммирует с 00000001, а затем производит операцию суммирования с уменьшаемым
Получается такой алгоритм:
00000011 = 3 - уменьшаемое
+
11111001 - инверсия 6
+
00000001 = 1 - смещение для отрицательных чисел, получаемых методом инверсии
-----------
11111101 = -3 - ответ, отрицательное число
Биты нумеруются справа на лево. Самый левый бит отвечает за знак числа. Данное число отрицательное, потому что восьмой бит "единица".
Эти и есть то самое вами так не любимое отрицательное число, Daniel.
Пример умножения:
00000011 = 3 - множимое
*
00000110 = 6 - множитель
Машина не умеет умножать, она производит суммирование со сдвигом. Множимое будет суммироваться столько раз, сколько "единиц" будет встречено в множителе. При этом множимое будет сдвигаться по битно влево. Для данного примера множимое будет суммировано 2 раза, потому что данный множитель состоит только из 2х "единиц"
00000000 - пустое произведение от начала операции
+
00000110 - множимое, сдвинутое до первой встретившейся "единицы" множителя, отсчет ведется справа на лево
+
00001100 - множимое, сдвинутое до следующей встретившейся "единицы" множителя
-----------
00010010 = 18 - произведение
При операции умножения ничего не множится, используется операция суммирования.
Алгоритм операции деления чуть чуть сложнее. Целочисленное деление в двоичном коде осилил, дробное не довел до конца, только в десятичном виде разобрался, но намучился прилично, пока отладил.
Что такое "умножитель", Daniel?