Вопрос кажется немного смущенным. Он просит преобразовать в дополнение к десятичной цифре, но дополнение 2 имеет смысл только в двоичном, а не в десятичном формате.
Если вы хотите сделать unit9_t значение в знаковый значения, вы можете - приведение его в какой-то знакового типа вот так: (int16_t) unsigned8variable - присвоить его переменной, которая имеет подписанный тип
Однако будьте осторожны с переполнением. Значение uint8_t может быть любым от 0 до 255. Если вы назначаете 8-разрядный тип подписки, существуют представления для значений от -128 до +127, и любое исходное значение больше 127 неожиданно окажется отрицательным. Выберите тип, который достаточно велик, чтобы сохранить любое значение, которое вы могли бы увидеть. int16_t будет безопасным, так как он достигнет 32767.
Вы можете просто использовать для проверки, (int8_t) – TJD