二进制补码转原码_C实现

typedef struct _Point
{
	int nx;
	int ny;
}Point;

Point originalPoint;          //原始坐标

// 数据有效位为12位
originalPoint.nx = (constell & 0xfff);          // x轴数值,为2进制补码;
originalPoint.ny = ((constell >> 12) & 0xfff);  // y轴数值,为2进制补码;
// 得到补码,将其转换为原码
if(originalPoint.nx >> 11)   //最高位是1,代表是负数的反码,计算原码
{
	originalPoint.nx -= 4096;  // 
}
if(originalPoint.ny >> 11)   //最高位是1,代表是负数的反码,计算原码
{
	originalPoint.ny -= 4096;  // 
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注