STM32单片机程序移植到51单片机坑之变量数据类型

文章讨论了在STM32和51单片机中,由于位数差异导致的计算结果错误,并强调了类型转换在确保正确运算中的重要性。作者解释了8位、16位和32位单片机的字长及其运算范围限制。

在STM32单片机中运行该计算可以取出正确结果但是在51单片机中结果是错误的

unsigned long	Freq;
unsigned char Freq1 = 60,Freq2 = 20,Freq1 = 10;
Freq	=	Freq1  * 10000 + Freq2  * 100 + Freq1 ;

通过如下添加类型强转发现结果又是正确的

unsigned long	Freq;
unsigned char Freq1 = 60,Freq2 = 20,Freq1 = 10;
Freq	=	(unsigned long)Freq1  * 10000 + (unsigned long)Freq2  * 100 + (unsigned long)Freq1 ;

出现的原因可能是单片机位数不一致导致的

================================

关于单片机位数的思考(8位、16位、32位)

================================

8位、16位、32位是指单片机的“字长”,也就是一次运算中参与运算的数据长度,这个位是指二进制位。以8位为例,8位二进制的表达范围是0000,0000-1111,1111即十进制的0-255,即每次参与运算的数据最大不能超过255。而16位机的字长是16位,其数据表达范围是0-65535,即每次参与运算的数据最大不能超过65535;32位单片机的字长是32位,其数据表达范围是0-4294967295,即每次参与运算的数据最大不能超过4294967295。

================================

关于类型转换

================================

参考:

关于单片机位数的思考(8位、16位、32位)_单片机8位16位32位是什么意思-优快云博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值