我用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就行了,没必要像我做得那么麻烦。
谢谢