#include <stdio.h>
typedef unsigned char bolean;
typedef unsigned char uc8;
typedef signed char sc8;
typedef char ch8;
typedef unsigned short u16;
typedef signed short s16;
typedef unsigned long u32;
typedef signed long s32;
typedef float f32;
typedef double f64;
s16 dataORG[5] = {-32727,-29453,0,1093,-3115};
s16 data[5] = {-32727,-29453,0,1093,-3115};
int main () {
for(int i=0;i<5;i++)
{
s16 result=0;
u16 tmp=0;
u16 tmp2=0;
tmp = (u16)data[i];
printf("#1##HEX()=0X%04X tmp=0x%04X\n",data[i],tmp);
printf("#2##HEX()=0X%04X\n",tmp&0xF000);
tmp2 = tmp&0xF000;
if(tmp2 == 0X8000)
{
printf("负数: HEX()=0X%04X\n",tmp);
data[i] = -(tmp&0x7fff);
}
else
{
data[i] = data[i];
printf("+:");
}
result = data[i];
printf("data[%d]=%d ----> (%d)\n\n",i,dataORG[i],result);
}
return 0;
}