计算机中传输的信息都是以补码的方式传递的,可以传递signed类型和unsigned类型的数据。根据传输的数据类型不同作如下区分
-
unsigned类型
补码 = 反码 = 原码
-
signed类型
1、正数,即原码最高位为0
补码 = 反码 = 原码
2、负数,即原码最高位为1
补码 = 反码 + 1
反码 = 原码除符号位外按位取反
因此,可以求所传输数据类型为signed类型的数据的物理值,假设数据长度为4bit,代码如下
//判断是否为正
if(value & 0b1000)
{
value = ~((value & 0b111)-1);
}
else
{
value = value;
}