uint8_t до функции дополнения до двух

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

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

uint8_t test = 0xF2

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

Спасибо!


person Jay Kim    schedule 25.06.2012    source источник
comment
Вы можете просто привести к подписанному, (int8_t)test   -  person TJD    schedule 25.06.2012


Ответы (2)


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

int8_t twosComplement = (int8_t)test;
person Wevah    schedule 25.06.2012

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

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

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

person ForDummies    schedule 18.08.2012