Как компьютер понимает что число именно unsigned?
"Понимает" компилятор C++. При компиляции он переводит программу в машинный код в том числе и с учётом объявленных типов переменных.
При выполнении программы никакого "понимания" уже не требуется, все действия заданы в коде.
Глядя на ячейку памяти невозможно сказать какое число в ней, т.к формы представления singed/unsinged это просто способ интерпретации бит. В фазе компиляции вы как автор должны указать компилятору тип данных чтобы корректно отработать умножение к примеру. 

Если вы хотите отдать значения во внешний мир, то передавайте их в виде текста, json, или специальных протоколов типа protobuf, apache thrift.