找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2987|回复: 31
打印 上一主题 下一主题
收起左侧

请教C语言四位数拆出每一位的问题

  [复制链接]
跳转到指定楼层
楼主
最近弄个东西 需要把3位或者4位数的每一位拆出来 比如1234拆成1,2,3,4 过去 我学会的 就是求余求模 一位一位的算 据说乘除法在51片子上消耗时间比较多 那么 假设偏执的只想减少计算时间 请教有什么其它方法吗
很久以前记得就此问题请教过一位前辈 那位前辈的说法 第一 C51里没什么好方法 基本就只能这么算 第二 他提出个移位的方法 但我没太明白 而且我尝试了一下 移位也不是特别简单的算法 比如1变成100并不是只要移位就行

我目前用的是笨方法 建立个四维数组 uchar code wei[4][256]={} 后边是4组256位对应值 使用的时候

qian=wei[0][x];
bai=wei[1][x];
shi=wei[2][x];
ge=wei[3][x];

我自认为这样比每一位求余求模快 是么

这样也有问题 占用空间太大了 过百就要用int 这还是个8位ADC转位 如果10位 那每个数组就的4*1024 而且每种数据的对应值是不一样的 比如电压 电流 转速三个采集的值要转成单独的位再发出去 就需要3个表 呃。。。。。。这么算 code表比程序都大了
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:624769 发表于 2021-12-5 15:11 | 只看该作者
建表思路不对, 你想一个表全都出来, 就会发现表的大小不是你能接受的. 做这东西要循序渐进, 一点点地递增。 先做出2位数的表,一般这个表我们称之为BCD表, 把 0~99 对应到 0x00~0x99 , 这样你就能轻松的把一个 0~99 的char 转成BCD码,然后 高四位是一个0~9 低4位是一个 0~9 , 这样一个表只有 100字节。

然后,你只需要把 0~9999 的双字节 拆成 2个 0~99 的单字节就能直接套用上表了。
这时候建表思路就很重要了。
一种是针对高8位,和低8位分别建表,表面上看,查表时轻松一点,但是查表后合并工作量会变大。
由于0~9999 转成2进制是没有16位长度的,总共只有14位长度,所以最高2位是不需要考虑的,
所以,我的做法是, 取低6位(0~5位)做为新的低8位,和取(6~13位)做为新的高8位,新的低8位(0~63 小于99)不需要查表,新的高8位查表得出  最终用于查表的 千百位, 和个十位,个十位和前面分割的新低8位合并,然后查询前面作出来的 BCD表 得到你所需要的每一位即可。
这种做法,查表前麻烦点,查表中后期工作量会少很多。你自己看着搞吧。
这样做出复合表 表的总体大小 600字节左右。就没有什么所谓了。

这问题吧,不适合问,你要问,大多数人都是跟你讲 51 没前途,去玩STM吧之类的,要么就是跟你说换1T的单片机,不在乎这些,包括我,都想跟你说你要是用 STC8系列的话,也是51核,但是带16位乘除法器,完全不用考虑乘除法效率问题。
也就以前自己做过查表,那么跟你说说这表的思路, 但是有一点,用这种复合查表方式,你用汇编的话,效率却是提高很多,用C的话,最终比除法取模也就提高各3~4倍左右效率,不是很明显。自己衡量

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:988145 发表于 2021-12-5 15:34 | 只看该作者
  1. unsigned int number=0;
  2. //千位
  3. number|=0x1;
  4. number<<=4;
  5. //百位
  6. number|=0x2;
  7. number<<=4;
  8. //十位
  9. number|=0x3;
  10. number<<=4;
  11. //各位
  12. number|=0x4;
  13. number<<=4;
复制代码

用二进制来存储数字的话每四位可以存储0-15,那么用一个unsigned int(2byte拆成4个bit)就可以存储四位,比如1234就可以是0001 0010 0011 0100,但我也不知道你具体是要干什么,我就假设你是按位输入然后储存下来,那么代码就可以是类似以上

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:47286 发表于 2021-12-5 16:51 | 只看该作者
先谢过 沙发 和 板凳 两位前辈

有些是我没说清 这并不是有什么不能说的 我就是个基于应用写程序 对基础了解很少 问问题可能就问不到点上

转换这个是为了给串口屏发数据 我用的这款只接受文本 就是说 不管屏幕以什么格式展现数字 发送给屏幕的时候都需要以文本格式 123就是0x31 0x32 0x33 这种情况下 我想了半天 好象不能用BCD码

因为我写的发送函数是进入循环发送后 分别调用 发送电压 发送电流 发送转速3个子函数 每个函数里又把当前ADC和中断采集的值转换成文本 那么 假设每个数值都是4位 电压是1200v(12.00v避免浮点运算) 电流是1000mA 转速是2000转 就是术哦每个都要求模求余4位

STM32干这个非常轻松 但我觉得浪费 实际上演示部分是屏幕去完成 控制板只采集个电流 交互一下 控制电机起停 就这么点事 不是用不起也不是不能用 可能是一种偏执吧 那假设我用PC+C干这点事 不是也行么

我用的片子是15系的 也是1T模式 但因为不是8系 没有乘除法器
回复

使用道具 举报

5#
ID:47286 发表于 2021-12-5 16:55 | 只看该作者
188610329 发表于 2021-12-5 15:11
建表思路不对, 你想一个表全都出来, 就会发现表的大小不是你能接受的. 做这东西要循序渐进, 一点点地递增。 ...

感谢你的回复 讲的很清楚

你的思路 我需要再研究一下 毕竟水平不够 理解的慢 但大盖意思我明白了 是我问题描述的不够清楚 我这情况不能用BCD码

你说的用STM 或者8系啥的 我也接受 实际搞也可以的 仅仅就事论事 在这个范畴内讨论一下 有闲时 有兴趣就回下即可

再次感谢
回复

使用道具 举报

6#
ID:47286 发表于 2021-12-5 17:02 | 只看该作者
会会会不会 发表于 2021-12-5 15:34
用二进制来存储数字的话每四位可以存储0-15,那么用一个unsigned int(2byte拆成4个bit)就可以存储四位 ...

感谢你的回复 你的范例我看懂了 理解你的意思

我水平有限 先研究一下你的方法 稍候回复
回复

使用道具 举报

7#
ID:624769 发表于 2021-12-5 17:37 | 只看该作者
dzbj 发表于 2021-12-5 16:55
感谢你的回复 讲的很清楚

你的思路 我需要再研究一下 毕竟水平不够 理解的慢 但大盖意思我明白了 是我 ...

不不不,
基准,要按照 BCD码考虑,不然反而更麻烦,
按你的需求,现转BCD是必要的。

你先按BCD码方式搞, 假定,算出 十位和个位, BCD 码 Temp_Low = 0x39  也就是十进制39,
发的时候:  
( (Temp_low & 0x0f)  | 0x30)  就是个位的  文本
( (Temp_low >> 4)  | 0x30)  就是十位的  文本
这个操作消耗资源极低, 如果你在源头就要弄成 文本 反而消耗资源极高, 相信我。
回复

使用道具 举报

8#
ID:47286 发表于 2021-12-5 20:19 | 只看该作者
188610329 发表于 2021-12-5 17:37
不不不,
基准,要按照 BCD码考虑,不然反而更麻烦,
按你的需求,现转BCD是必要的。

你的意思是用查表法把HEX转BCD 然后用你说的移位法把BCD转文本 是吗

如果是 可能是个好办法 我现在做表试试
回复

使用道具 举报

9#
ID:401564 发表于 2021-12-5 20:53 | 只看该作者
消耗时间比较多
我敢打赌,很少有人把单片机消耗到慢下来的地步
除非是故意的,或者是在uS级别中断中加入计算
否则,在很多时候,是不需要考虑单片机运算速度的,因为,单片机单单依靠软件去计算本身就很慢,在很多时候是不需要单片机很快的,要它快的时候,自然有对应的处理办法,比如增加片上的硬件加法器,或者硬件乘法器
而对于发送到串口,很多时候是不能用BCD码的,这一点很重要,大多时候是要发送ASCII码的
因为,发送数据或者BCD码,都有可能出现'\0',也就是0x00,这是C语言中的字符串结束,有一些函数碰到结束符就会结束处理,这样就容易出错了,因为,发送的是0x00这个是数据,但上位机觉得你发的是结束符,提前收工了
就算是上位机给单片机发送数据,一般都不会直接发送,大多是发送ASCII或者字符串,很少有直接心头数据,除非很有必要
回复

使用道具 举报

10#
ID:47286 发表于 2021-12-5 21:26 | 只看该作者
188610329 发表于 2021-12-5 17:37
不不不,
基准,要按照 BCD码考虑,不然反而更麻烦,
按你的需求,现转BCD是必要的。

按照之前说的尝试了 成功 code的量缩小一半 原来是四组char 每组256个 现在是一组int 也是256个

用电流做的测试 电流采集的方法是10mΩ采样电阻 INA181 这东西出来的电压对应当时电流

用excel把ADC采集的值转换成对应的电流 然后把这个值转成整数的十进制 再转成BCD 导出成Keil的code

发送时 用当时的ADC值(HEX)对应code表位值(BCD) 等于把当时的ADC采集HEX值直接转成实际电流值 再分别右移 拆出具体的千 百 十 个位
回复

使用道具 举报

11#
ID:47286 发表于 2021-12-5 23:50 | 只看该作者
Y_G_G 发表于 2021-12-5 20:53
消耗时间比较多
我敢打赌,很少有人把单片机消耗到慢下来的地步
除非是故意的,或者是在uS级别中断中加入计 ...

是的 单独干一件事 确实如你所说 只是我在一个系统上干的事多 反正每次搞个东西 不给所有脚都用上就觉得亏 事情多了综合处理 还是会有影响的 我相信一句话 每一步都追求完美 结果才会完美 受水平限制 我只能每一步都追求完美 让结果尽量接近完美吧
回复

使用道具 举报

12#
ID:624769 发表于 2021-12-6 00:15 | 只看该作者
dzbj 发表于 2021-12-5 23:50
是的 单独干一件事 确实如你所说 只是我在一个系统上干的事多 反正每次搞个东西 不给所有脚都用上就觉得 ...

多的不说了,有兴趣的话,看看这个吧,不需要数组的提高效率解析法。代码大小也比常规的小。个人认为,这样就差不多了,毕竟,我后来也放弃数组法了。(虽然数组法是最高效的,有空再和你说原因)

在89C51,12Mhz 晶振下测试:
常规取模算法转ASCII, 用时640us, 在Test_C 中
用我的算法,用时102us,在Test_A 中

如用1T单片机效率可以更高。

Test_Code.rar (861.79 KB, 下载次数: 7)



回复

使用道具 举报

13#
ID:47286 发表于 2021-12-6 00:49 | 只看该作者
188610329 发表于 2021-12-6 00:15
多的不说了,有兴趣的话,看看这个吧,不需要数组的提高效率解析法。代码大小也比常规的小。个人认为,这 ...

好的 我仔细研读一下 好好学习天天向上 哈哈

另外 补充一下 移位的时候 貌似每次都要&0x0f

比如0x0122=1 0010 0010

取十位右移4=1 0010

如果用unsigned char串口输出是0x12 不是0x02 转文本就成0x42了 得不到0x32
回复

使用道具 举报

14#
ID:47286 发表于 2021-12-6 00:58 | 只看该作者
188610329 发表于 2021-12-6 00:15
多的不说了,有兴趣的话,看看这个吧,不需要数组的提高效率解析法。代码大小也比常规的小。个人认为,这 ...

老大 汇编啊 不懂啊 真心看不懂啊

我还没学单片机 我还高中刚毕业那年代 那时候8086国土上还没有的年代 5.25寸软盘=现在IPHONE的年代(APPLE II可以外挂5.25磁盘机) 我就觉得能写汇编的都是神 现在我对会写汇编的人只有裸的膜拜心 其它没想法的
回复

使用道具 举报

15#
ID:213173 发表于 2021-12-6 07:48 | 只看该作者
对于不同数据处理方法有所不同,没有一招通吃天下的方法。就楼主的举例用如下方法在12MHz晶振条件下488us即可完成4位十进制的位分解。
        unsigned char i;
        unsigned char buf[4];
        unsigned int b=1234;
        for(i=0;i<4;i++)
        {
                buf[i]=b%10;//由低位到高位保存
                b/=10;
        }
回复

使用道具 举报

16#
ID:47286 发表于 2021-12-6 09:29 | 只看该作者
wulin 发表于 2021-12-6 07:48
对于不同数据处理方法有所不同,没有一招通吃天下的方法。就楼主的举例用如下方法在12MHz晶振条件下488us即 ...

感谢回复

这思路也很棒啊 每次取末位 减少很多运算量 我咋就没想到呢 学习了

在和各位前辈请教前 我就知道傻傻的一位一位求模求余的算法 后来我那种查表不算算法 是人代替片子计算而已
回复

使用道具 举报

17#
ID:401564 发表于 2021-12-6 11:02 | 只看该作者
dzbj 发表于 2021-12-5 23:50
是的 单独干一件事 确实如你所说 只是我在一个系统上干的事多 反正每次搞个东西 不给所有脚都用上就觉得 ...

把功夫用在钻牛角尖上,还不如多了解一下单片机方面的知识
比如:为什么人家不直接发送数据本身,或者BCD码,而大多数是发送ASCII码?我直接发送数据不行吗?为什么非得那么麻烦呢?
你想提高运算速度,为什么不用STC8G2K系列呢,也不知道你有用过硬件乘法器没有
32位除以16位,只要17个时钟,你试一下所谓的优化代码,软件能达到这个速度吗?
回复

使用道具 举报

18#
ID:47286 发表于 2021-12-6 12:09 | 只看该作者
Y_G_G 发表于 2021-12-6 11:02
把功夫用在钻牛角尖上,还不如多了解一下单片机方面的知识
比如:为什么人家不直接发送数据本身,或者BCD码 ...

嗯嗯 你说的对 更好的东西谁会排斥呢 这不就是交流一下么 当然 对我来说主要是学习 咱搞工科的人都喜欢较劲 你这一遍一遍的说我 看不上我这思路 不也是一种较劲 正常 正常 求同存异 别管我钻不钻牛角尖 好歹我这算是个上劲的心吧 看这份上 原谅我呗 哈哈
回复

使用道具 举报

19#
ID:57657 发表于 2021-12-6 12:42 | 只看该作者
可以看下C语言union结构的用法,如果有用就不用移位了。
回复

使用道具 举报

20#
ID:47286 发表于 2021-12-6 13:12 | 只看该作者
npn 发表于 2021-12-6 12:42
可以看下C语言union结构的用法,如果有用就不用移位了。

感谢回复

union我用过 用来拆分TL和TH的高低8位 但不了解原理 我这半路出家 只会用 感觉上union只能拆分两个8位 但一个int可以表示1234 貌似拆不出来 就没想过用这个东西
回复

使用道具 举报

21#
ID:624769 发表于 2021-12-6 13:55 | 只看该作者
dzbj 发表于 2021-12-6 00:58
老大 汇编啊 不懂啊 真心看不懂啊

我还没学单片机 我还高中刚毕业那年代 那时候8086国土上还没有的年 ...

兄弟, 没让你学会编啊, 没看我都打包好,让你直接调用了么? 怎么调用的这个实例你总能看懂吧?

而且, 直接用出发取模, 为啥编译后会那么大? 因为也是调用了一个系统内部的,用于16位的除法的汇编代码,你Debug跳进去看,也是看不懂的。你的目的不就是提高效率么?所以我给你这个,应该是,再没有16位硬件除法器的前提下,能达到的最高效率了。

查表方式我已经放弃很久了,记不清了,印象当中,在完全C语言代码编写的前提下,完成你需要达到的最终结果,怎么也要将近100us的时间。但是表非常占空间。

至于,这个算法为啥是汇编写的,实在是因为,我的C语言太滥,写不出来,原理来讲,就是强制调用51单片机的8位除法器,来分段除法,以此提高效率,但是,我尝试用C语言写,可能我C实在太差,不管我如何调整我的写法,到了编译的时候,始终都会被编译成使用加法器来计算,所以,后来干脆就直接用汇编代码写了。
回复

使用道具 举报

22#
ID:231701 发表于 2021-12-6 14:06 | 只看该作者
其实改成字符型的应该就可以了吧?
回复

使用道具 举报

23#
ID:47286 发表于 2021-12-6 14:23 | 只看该作者
188610329 发表于 2021-12-6 13:55
兄弟, 没让你学会编啊, 没看我都打包好,让你直接调用了么? 怎么调用的这个实例你总能看懂吧?

而且, 直 ...

调用会 一看就明白 本来以为你是发个范例让我自己去理解 我都准备好纸笔和马扎了 谁想到老兄扔个成品上来 完全属于被馅饼砸了后蒙B状态

查表是太占空间了 以前只拆一个数字还好 虽然也想知道 但没那么迫切就一直没问过 这次数字多 对应值还都不一样 查表法就简直了 虽然用了个32k的片子那也不能这么祸害啊 就想问问前辈们 我觉得wulin前辈那思路也给我很大启发 以前总想着从高位拆下来 他那个低位开拆的思路也是让我受教了

汇编无疑是神器 一直是满心崇拜 只是太底层了 我是没时间去学了 不是每天的时间 是这辈子快混没了 总不好咽气那天还在记地址吧 哈哈 现在学东西和年轻的时候不一样 打开书 基本上看看就明白了 合上书 嗯。。。。。全忘了 再打开书 又明白了 然后 看着看着 睡着了
回复

使用道具 举报

24#
ID:624769 发表于 2021-12-6 14:50 | 只看该作者
dzbj 发表于 2021-12-6 14:23
调用会 一看就明白 本来以为你是发个范例让我自己去理解 我都准备好纸笔和马扎了 谁想到老兄扔个成品上来 ...

先说 wulin 那个帖子的算法, 正确的拆分法,就是应该从低位拆起,其实我给你的那个优化算法,也是从低位拆起的,站在计算机的运算原理上,低位拆起,效率是最高的,缺点是:正常保存的时候,就会低位在前,要高位在前的话,要增加一些代码。我给你的那个也是低位在前,你如果需要高位在前,我可以帮你改一下。
然后,从低位拆起需要注意的是: 会破坏原始值。 wulin 同志给你的样本里面没有写传参,你正常用的话,如果写成子函数调用的话,一般都会传参,不需要考虑这个问题,但是,如果贴到主程序里直接使用,你就必须要注意,是否需要保留原始值的问题。
最后,汇编没有你想象的那么神,我学了3年的C, 总之,用现在的我来评价,我的C学的是垃圾中的战斗机,代码写的大,效率又低,唯一能做的就是不停的升级我的单片机,扩大单片机容量,后来因为某些原因不得不学一下汇编,大约1个月吧,就入门了,然后就开始用汇编改写以前的代码,代码就越写越小,效率越来越高,以前从STC89C51 一步步升到 STC8A8K64SA12 后来是一步一步退到STC15W204S. 因为效率高了,代码小了。 这个时候我充分的意识到………………  我的C,学得太滥了,所以,后来又重头开始学C.
可能你觉得会汇编很神, 但是在我的角度来看, 但凡用C能写出,我只能依靠汇编才实现的功能的人,全是牛人。
回复

使用道具 举报

25#
ID:47286 发表于 2021-12-6 15:12 | 只看该作者
188610329 发表于 2021-12-6 14:50
先说 wulin 那个帖子的算法, 正确的拆分法,就是应该从低位拆起,其实我给你的那个优化算法,也是从低位 ...

大小头的事 我注意到了 这个在用的时候会注意 但你说的先拆小会改变初值没懂 从大头拆不会么 不过问题不大 初值变了后边肯定会有问题 调的时候碰壁自然就知道改 没关系的

c可能更接近日常思路吧 汇编不了解 看过几段东西 好象都是对具体物理地址的操作 想想自己从1数到1024得睡着好几次 直接就撤了
回复

使用道具 举报

26#
ID:155811 发表于 2021-12-6 15:47 | 只看该作者
楼主有钻研精神
回复

使用道具 举报

27#
ID:47286 发表于 2021-12-6 17:51 | 只看该作者
himanzj 发表于 2021-12-6 15:47
楼主有钻研精神

谢谢鼓励
回复

使用道具 举报

28#
ID:624769 发表于 2021-12-6 20:07 | 只看该作者
顺便和你说说16位硬件乘除法器,以及为啥我会自己折腾优化算法,假如,对此你有兴趣的话。
曾经,有一段时间(在我还没学汇编之前),我是非常迷信16位乘除法器的,但是,由于先天的缺陷,导致16位乘除法器,在姚老板的设计下,在STC8系列下,无法达到令人满意的效果,(这是学了汇编之后,才发现的)。不多说,上图。

以下是用16位除法器:



以下是用8位除法器:



在,同时用STC8G单片机,晶振设定为12Mhz的前提下:
除去程序启动用去的65us,
使用16位除法器,需要耗时19us 完成所有运算(其中还未包含等待除法完成的被我注释掉那段的时间,否则总体时间会增加约3us),
而使用8位除法器,分段计算,实际只需要13us。

由此看来,使用16位硬件除法器,效率只有更低,这是什么原因呢,主要就是因为51构架,以及姚老板的设计上的不周,16位硬件除法器使用的是XSFR,虽然计算快了,但是访问太慢,读写都耗费太多时间。所以,使整体效率降低了。

之所以说这些,是因为曾经我迷信过姚老板,希望你不要同样入我入过的坑。

以下提供代码,可供验证。

Test_Code.rar (861.79 KB, 下载次数: 2)


回复

使用道具 举报

29#
ID:624769 发表于 2021-12-6 21:37 | 只看该作者
上文中16位硬件除法器的实验代码略有错误,修正如下:

使用16位除法器,需要耗时17us 完成所有运算。(未包含注释掉的等待计算完成的时间)

贴图如下:




新的代码包如下:
Test_Code16.rar (760.59 KB, 下载次数: 2)


回复

使用道具 举报

30#
ID:57657 发表于 2021-12-6 21:59 | 只看该作者
dzbj 发表于 2021-12-6 13:12
感谢回复

union我用过 用来拆分TL和TH的高低8位 但不了解原理 我这半路出家 只会用 感觉上union只能拆 ...

C语言的union、struct属于基本语句,很多算法都要用的到,比如这样:
  1. #include "reg51.h"
  2. #define u8 unsigned char
  3. void main() {
  4.         union {
  5.                 unsigned char c[4];
  6.                 unsigned int i[2];
  7.                 unsigned long l;
  8.                 float f;
  9.                 struct {
  10.                         u8 a0;
  11.                         u8 a1;
  12.                         u8 a2;
  13.                         u8 a3;
  14.                 } s;
  15.         } u;


  16.         u.f = 3.1415926;
  17.         if (u.s.a0 == u.c[0]) {
  18.                 if (u.s.a1 == u.c[1]) {
  19.                         if (u.s.a2 == u.c[2]) {
  20.                                 if (u.s.a3 == u.c[3]) {
  21.                                         if (u.l == 0x40490FDA) {
  22.                                                 P1 = 0xAA;
  23.                                         }
  24.                                 }
  25.                         }
  26.                 }
  27.         }

  28.         while (1);
  29. }
复制代码
回复

使用道具 举报

31#
ID:47286 发表于 2021-12-6 23:38 | 只看该作者
188610329 发表于 2021-12-6 20:07
顺便和你说说16位硬件乘除法器,以及为啥我会自己折腾优化算法,假如,对此你有兴趣的话。
曾经,有一段时 ...

明白 理解你说的意思 STC国内应用面广一点 在很多领域够用罢了 对它我个人倒是没有迷信 它的技术文化还是比不了那些强大的公司

企业的文化决定对自身产品的认知 这种认知会体现在设计 制造 以及服务中 这方面 无疑STC和更好的企业比差距还不小 姚老板是个很成功的商人 我敬佩他的能力 但并不怎么佩服他的产品 凑合用就得了 当然 他也看不上我这种原子级别的客户 而我也不需要他看得上 全世界那么多品牌和产品随便我选 就是这样了

最后提个幼稚的问题 51片子有8位的乘除法器是么 至少我是第一次知道 之前我看过的书里也没提这样 也许我看那些书都更偏向使用 什么快速入门啊 什么经典范例啊 深的也没读过

如果有8位的乘除法器 是不是意味着char级别的乘除法并不用太考虑运算带来的消耗 不过也许这想法没毛的用 你都说过用C打不开
回复

使用道具 举报

32#
ID:47286 发表于 2021-12-6 23:46 | 只看该作者
npn 发表于 2021-12-6 21:59
C语言的union、struct属于基本语句,很多算法都要用的到,比如这样:

感谢回复 union还能这么用 受教了 明天我用程序实际看一下结果
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表