单片机c语言如何表示二进制,单片机C语言中将二进制数转化为十进制的办法

本文探讨了将二进制数转换为十进制数的两种方法,包括传统的除10取余法和改进的除以10^k法。后者通过将2进制数转换为整形数组并分阶段计算,显著减少了除法操作,提高了效率。对于大数运算,这种方法能避免平方级别的复杂度,特别适用于需要快速转换大量二进制数的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单片机C语言中将二进制数转化为十进制的办法

1.最简单最直观的方法,将2进制方式表示的数转化为10进制表示的数,要用除10取余法,步骤如下

被除数记为x,10进制表示的结果用数组a表示

1. i=0;

2. a[i]= x % 10; x=x/10; i++;

3. 如果x>0,转2,否则转4

4. 将数组a逆序

2.上面的方法虽然简单,但是速度很慢,假如结果需要n位10进制数,大约需要进行 n^2/2 次除法。一种改进的方法是: 除以10^k来代替除以10,典型的做法是除以10^9,这样得到余数将是0-10亿之间的数,因此采用该法需要2个阶段的计算。

第1阶段,将2进制数转化为一个整形数组,数组中的每个元素为0- 999999999 的数。这个阶段需要做 n^2/(81*2)次 64bit/32bit的除法。

第2阶段,将每个10^9以内的数转化为9位‘0’-‘9’之间的数字,结合除法和查表,每个10^9以内的数转化为9位数字,仅仅需要2次除法。这一阶段需要需要 n/9*2=n/4.5次除法,当n较大时,相对于第一阶段,运算量可忽略不计,因此这个方法比方法1要快45(9*9/2)倍.

3.多位数(大数)乘以或除以一位数(这里指可以用内置的整数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值