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位数验证一下:
打印验证
是不是很简单呢?

用WINDOWS自带的计算器验证一下
计算器验证
在这里插入图片描述
在这里插入图片描述
Amazing!!!

  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值