2012-06-25 2 views
2

Я использую объектив-c в xcode. Как я могу преобразовать кусок данных uint8_t в дополнение к десятичной двое? Диапазон от -127 до 127, правильно?uint8_t до функции дополнения двух

Если у меня есть:

uint8_t test = 0xF2 

Есть ли функция или метод, построенный в том, что я могу использовать? У кого-то есть простая функция?

Спасибо!

+2

Вы можете просто использовать для проверки, (int8_t) – TJD

ответ

3

Это делает то, что вы хотите?

int8_t twosComplement = (int8_t)test; 
1

Вопрос кажется немного смущенным. Он просит преобразовать в дополнение к десятичной цифре, но дополнение 2 имеет смысл только в двоичном, а не в десятичном формате.

Если вы хотите сделать unit9_t значение в знаковый значения, вы можете - приведение его в какой-то знакового типа вот так: (int16_t) unsigned8variable - присвоить его переменной, которая имеет подписанный тип

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

Смежные вопросы