下面是24位有符号数转化位32位有符号数( c语言实现)
由于正数不需要处理。因此只需要判断负数即可,代码如下
if(dat&0x00800000)// 判断是负数 最高位24位是符号位
{
dat=-(((~dat)&0x007FFFFF) + 1);// 补码变源码
}
此种情况常出现在AD采集情况下。例如 CS1237的数据采集时就是需要进行数据转换。
特此记录
anlog
2022年3月9日
if((dat&0x800000)==0x800000) //如果最高位为1,则是负数
{
dat|= 0xff000000; //高位补1
}
特此记录
anlog
2024年8月27日