编辑代码

#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}; //0xffff8029
s16    data[5] = {-32727,-29453,0,1093,-3115}; //0xffff8029

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);
  }

   //printf("result=0x%x  data0=0x%x\n",result,data0);
    
    return 0;
}