关于补码数据的小问题。某传感器传输的数据是由高低八位两个寄存器储存的16位补码数据。由下节代码融合

关于补码数据的小问题。某传感器传输的数据是由高低八位两个寄存器储存的16位补码数据。由下节代码融合成一个数据:inttemp=(H<<8)+L;那么请问temp中的数据是... 关于补码数据的小问题。某传感器传输的数据是由高低八位两个寄存器储存的16位补码数据。由下节代码融合成一个数据: int temp =(H<<8)+L; 那么请问temp 中的数据是什么形式的数据?还是补码吗?如果要继续得到数据的真实值,该怎么写代码? 给高追加分! 展开
 我来答
最不过执着
2014-08-19 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:70
采纳率:0%
帮助的人:51.3万
展开全部
因题目中所说数据是补码形式存储,故temp也是补码。移位有算术移位和逻辑移位,对于源码,补码,反吗操作各不相同,这都是由内部逻辑器件设计的,但如果没有移位丢失数据的情况下。他们结果都是相同的,
即左移1位真实值乘2。因为题目中是将8位寄存器移位到16位的temp中,故不考虑移位丢失情况。如果你是编程的话,直接将temp输出就是他此刻的真实值。至于计算,就是H*256+L
更多追问追答
追答
抱歉,说错了。。关于H部分没错。但对于L,若L是正数,即原来就是源码表示,但计算时会将它求补。即结果为temp=H*256-L。。
若L为负,之前也由补码表示,考虑符号位1求反后为0。故也就是之前说的结果
追问
谢谢!意思说,对于补码的解码、换算成真实值,在给temp赋值的时候就已经由单片机内部完成,而不需要我再去设计什么算法把补码转化成真实值?最终temp中的数据就是16位有符号数据的真实值?按十进制输出就可以?比如int temp=temp/64之后temp中就是十进制的数?
真的不懂补码在计算机中怎么应用的。
匿名用户
2014-08-19
展开全部
上百度查查
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式