24位有符号数转32位有符号数最简单方法【stm32/C语言】

24位有符号数转32位有符号数最简单方法

最近第一次用24位ADC,用SPI读取的数据是24位有符号数。
  
  众所周知,数据的最高位是符号位,那么24位数据的第24位是符号位,而在C语言中24位数据只能用32位变量存储,32位变量的符号位很明显在第32位,直接赋值是不会有负数的。
  
  网上看了很多方法,什么用指针,什么把24位数据分成3个8位,什么取反再+1,乱七八糟一堆不说,代码又长,居然还有很多文章的结果算出来是错的,差点被他们绕进去。
  
  那么问题来了
  
  24位数据转为32位数据是怎么回事呢?24位数据相信大家都很熟悉,但是24位数据转为32位数据是怎么回事呢,下面就让小编带大家一起了解吧。
  
  24位数据转为32位数据,其实就是负数多余位补1,大家可能会很惊讶24位数据怎么会转为32位数据呢?但事实就是这样,小编也感到非常惊讶。
  
  这就是关于24位数据转为32位数据的事情了,大家有什么想法呢,欢迎在评论区告诉小编一起讨论哦!
    
  程序如下:首先判断这个数是不是负数,如果是负数,则把多余位补1即可。
  magic~:

int S24toS32(int input)
{
	if((input&0x800000)==0x800000)		//如果最高位为1,则是负数
	{
		input |= 0xff000000;		//高位补1
	}
	return input;
}

我们输入几个24位数验证一下:
24位有符号数转32位有符号数最简单方法【stm32/C语言】_第1张图片
是不是很简单呢?

用WINDOWS自带的计算器验证一下
24位有符号数转32位有符号数最简单方法【stm32/C语言】_第2张图片
24位有符号数转32位有符号数最简单方法【stm32/C语言】_第3张图片
24位有符号数转32位有符号数最简单方法【stm32/C语言】_第4张图片
Amazing!!!

你可能感兴趣的:(STM32学习,stm32,c语言,spi)