一共有两个问题,分别描述如下,各位老师和朋友如果能回答如下任何一个问题都不胜感激:
问题一:
调试hmc5883l传感器,用BUF分别储存三个轴的测量数据,比如x轴的高8位数据存在BUF[0]中,低八位存在BUF[1]中,通过如下操作合并高低8位寄存器的值。我能理解这段代码的操作意图,但是不明吧其具体是如何操作的,问题如下的:
比如说BUF中的值是:00111001(我不知道是不是该用二进制表示),BUF[0]<<8结果是多少?是0000 0000还是00111001 00000000.
[mw_shl_code=c,true]BYTE BUF[8];
x = BUF[0] << 8 | BUF[1];
y = BUF[4] << 8 | BUF[5];
z = BUF[2] << 8 | BUF[3];
[/mw_shl_code]
问题二:
在获得x,y轴的数值之后,我参考的程序用一下方法计算角度。具体的计算不需要关注,问题是技术手册(见下图)中说x,y寄存器中的数值是以二级制补码的形式存在的。所以我如下问题:
二进制的补码用(double)进行强制类型转换后的结果是什么,补码是正数的话没问题,如果补码要是负数结果是什么东西?
[mw_shl_code=c,true]angle= atan2((double)y,(double)x) * (180 / 3.14159265) + 180; // angle in degrees[/mw_shl_code]
|