Потому что компилятор генерирует код
a - b
как
a + (-b)
число -b в дополнительном коде
в 16- й системе выглядит как FFFFFF
в 10- й системе выглядит как 65535
получается сложение 1 + 65535 = 65536
Но число 65536 в unsigned short не помещаяется,
и один разряд теряется.
Отсюда неправильный вывод.
Давай к нам, в forth разработчикам перебирайся.
Мы по причинам хорошо разбираемся
в архитектуре ПК, числах, работой с памятью, числах
и многом другом.
Общаемся здесь:
https://t.me/ruforth