2012-06-25 4 views
2

xcode에서 objective-c를 사용하고 있습니다. uint8_t 데이터를 10 진수 2의 보수로 변환하려면 어떻게해야합니까? 범위는 -127에서 127 사이입니다. 맞습니까?uint8_t의 2의 보수 함수

내가있는 경우 :

uint8_t test = 0xF2 

내가 사용할 수있는 내장 함수 나 방법이 있습니까? 누군가 간단한 기능을 가지고 있습니까?

감사합니다.

+2

서명 된 (int8_t) 테스트로 캐스트하면됩니다. – TJD

답변

3

원하는대로 할 수 있습니까?

int8_t twosComplement = (int8_t)test; 
1

질문이 약간 혼란스러워 보입니다. 십진수 2의 보수로 변환하라는 메시지가 표시되지만 2의 보수는 의미가 있습니다 은 십진수가 아닌 2 진수입니다.

서명 된 값으로 unit9_t 값을 확인하려면, 당신은 수 있습니다 - 같은 일부 서명 유형으로 캐스팅 : (int16_t) unsigned8variable - 서명 유형이 변수에 할당

그러나 오버플로에주의하십시오. uint8_t 값은 0에서 255 사이의 값이 될 수 있습니다. 부호있는 8 비트 형식에 할당하면 -128에서 +127 사이의 값에 대한 표현이 나타나고 127보다 큰 원래 값은 갑자기 음수로 나타납니다. 실제로 볼 수있는 모든 가치를 보유 할만큼 큰 유형을 선택하십시오. int16_t는 32767까지 올라 가기 때문에 안전합니다.

관련 문제