#include <stdio.h>
#include <math.h>
#include <stdint.h>
int main(){
unsigned char msbyte =0xff;
unsigned char lsbyte = 0xff;
uint16_t temp=0;
int16_t num16=0;
temp = (msbyte<<8) | lsbyte;
num16 = (int16_t)(temp & 0x7FFF);
if(temp & 0x8000) { /* Get sign bit */
num16 = num16 * -1 - 1;
}
printf(" %4x temp %d ", temp
,num16
);
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KaW50IG1haW4oKXsKICB1bnNpZ25lZCBjaGFyIG1zYnl0ZSA9MHhmZjsKICB1bnNpZ25lZCBjaGFyIGxzYnl0ZSA9IDB4ZmY7CiAgdWludDE2X3QgdGVtcD0wOwogIGludDE2X3QgbnVtMTY9MDsKICB0ZW1wID0gKG1zYnl0ZTw8OCkgfCBsc2J5dGU7CiAgbnVtMTYgPSAoaW50MTZfdCkodGVtcCAmIDB4N0ZGRik7CiAgaWYodGVtcCAmIDB4ODAwMCkgeyAvKiBHZXQgc2lnbiBiaXQgKi8KICAgIG51bTE2ID0gbnVtMTYgKiAtMSAtIDE7CiAgfQogIHByaW50ZigiICU0eCB0ZW1wICVkICIsIHRlbXAsbnVtMTYpOwoKICByZXR1cm4gMCA7Cgp9Cg==