微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 我用long int 型采集了ad输出的24位有符号二进制补码数据,问题如下

我用long int 型采集了ad输出的24位有符号二进制补码数据,问题如下

时间:10-02 整理:3721RD 点击:

1.24位的二进制补码第24位为符号位,但我用的long int 形第32位为符号位,用ccs中的数据watch窗口,转换成十进制数据观察是不是不能匹配,因为符号位的位置的不同,那该如何观察数据。

2目前内存是小端序,高位存在低地址,地位存在高地址,导致显示出错,能否将其变成大段序的显示方式。

我也遇到了这个问题,我是这样做的:

假设读取到的24位数据表示成如下形式:0x 1xxx xxxx xxxx xxxx xxxx xxxx(真值为-a)

将其中的xxx xxxx xxxx xxxx xxxx xxxx 转换为原码(先减1,再按位取反)

这样就得到了a

最后将a* (-1)赋给一个long型的变量。

这个是补码转源码的方式吧,long int 型怎么看24位数据

你直接把从ADC读到的24位数据赋值给一个long型变量,这肯定是不行的。

假设你从ADC读到的是 0xFF FF FF, 它的真值是-1.

而你直接将它赋值给一个long型变量,那么这个变量的值是0x00 FF FF FF, 它的值却是16777215.

即使你将long型变量赋值为0x80 7F FF FF, 也是不可行的,这个变量的真值为-2139095041

那我该如何赋值便于我观察变量

对于负数,原来只要高8位全补1就行了,没必要像我做得那么麻烦。

谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top