ADS1220给出的转换结果是 补码形式,为了 计算 输入的模拟量大小,需要 转换为原码。
请教:
知道 补码,如何 计算 原码 ?
如 补码为0x80 0000h,原码如何计算 ?
我的思路是:用原码 转 补码 的逆运算(减1,然后 再各位取反)。
按照上面的思路 计算:
0x80 0000H的原码为:0000 0000 0000 0000 0000 0000;
0xFF FFFFH的原码为:1000 0000 0000 0000 0000 0001.
不知道 是否 正确,还请大侠指点 !
非常感谢!
我记得是这样的:
整数的补码与原码相同,不存在转换。
负数的补码与源码转换规则为:取反+1,无论哪个转哪个都是这个规则
乍一看这个问题,感觉好像是楼主想多了,搞不好是想歪了。
补码的意义:
1.利用二进制表示负数。
2.便于运算
大部分处理器都是补码表示负数了。所以基本上是不需要编程人员刻意去思考转换过程的。
所以我理解似乎只要用有符号的变量去接收返回值就OK了,重点是数据字长以及端序的对应要正确。
综上所述,楼主的问题我没接触过,所以不懂……
1、原码分正数和负数,正数时,其符号位用0表示,负数时,其符号位用1表示。
2、反码:正数的反码同原码一样,负数的反码为除符号位外,其它各位按位取反。
3、补码对于正数来说同原码一样,对于负数来说补码为其反码加1.
按照上述说法,可知,对于正数来说通过补码就可以知道原码。而对于负数来说通过补码计算原码,其过程为补码减1,之后其值取反即为原码。