完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛
|
|
|
|
|
|
|
|
|
jianhong_wu 发表于 2013-7-20 01:51 哈哈,看的我激情澎湃啊。 |
|
|
|
|
|
|
|
|
第四十四节:算术篇---大数据的乘法运算 开场白: 直接用C语言的“*”运算符进行乘法运算时,“被乘数”,“ 乘数”,“积”,这三个数据的最大范围是unsigned long 类型,也就是数据最大范围是4个字节,十进制的范围是0至4294967295。一旦超过了这个范围,则运算会出错。因此,当进行大数据乘法运算时,我们要编写专用的乘法程序,这种算法就是我们在小学里学的四则运算。 我们先要弄清楚一个新的概念。一个数据在不考虑小数点的情况下,有两种表现形式。一种是变量形式,一种是数组 形式。这两种数据的表现形式可以通过一个函数相互转换。比如一个系统里数据的最大有效位数是36位。如果用变量形式,因为一个unsigned long变量最多只能容纳9位十进制的有效数据,因此我们就需要4个unsigned long变量。如果用数组形式,我们就需要一个能容纳36个unsigned char数据的数组。比如: (a)用变量形式表示 4212345678这个数据。 unsigned long opera_left_var[4]; //定义4个变量。 opera_left_ var [0]= 212345678; //第1至第9位有效数据 opera_left_ var [1]= 4; //第10至第18位有效数据 opera_left_ var [2]= 0; //第19至第27位有效数据 opera_left_ var [3]= 0; //第28至第36位有效数据 (b)用数组形式表示 4212345678这个数据。 unsigned char opera_left_array[36]={ //定义一个可以容纳36个数据的数组 8,7,6,5,4,3,2,1,2, //第1至第9位有效数据 4,0,0,0,0,0,0,0,0, //第10至第18位有效数据 0,0,0,0,0,0,0,0,0, //第19至第27位有效数据 0,0,0,0,0,0,0,0,0, //第28至第36位有效数据 }; 因为核心算法部分都是以数组形式进行,因此运算前必须先把变量数据转换成数组数据,运算结束后再把数组数据转换成变量数据。也就是先“化整为零”,最后再“化零为整”。 (1)功能需求: 按一个按键,如果4287654321*98的运算结果是420190123458,则蜂鸣器长鸣一声表示运算正确。否则,短鸣一声表示运算错误。 (2)硬件原理: 独立按键的电路请参考第二节。 (3)源码适合的单片机: PIC18f4520,晶振为3.579545MHz。 (4)单片机的C语言源代码讲解:请下载本节的附件。 (5)下集预告: 算术篇---大数据的除法运算 (未完待续,下节更精彩,不要走开哦!)
|
|
|
|
|
|
我也在用这个芯片,同学们都用74hc573这些锁存芯片我嫌弃这种方式电路太麻烦,他们举得我的编程太麻烦,不过我还是偏向于1639的。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
初中毕业感觉很吃力!!!!!
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
求解外围电路实现的是4脚给持续低电平复位并正常工作,高电平不工作的原因
2382 浏览 1 评论
4242 浏览 3 评论
PIC1946程序有一个变量在运行过程中恢复初始值其他变量保持不变
2619 浏览 2 评论
3118 浏览 0 评论
PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?
4577 浏览 5 评论
有套STM32与西门子200程序需要代写,有兴趣的工程师与有联系!
2491浏览 1评论
用XC8编译PIC18F25K80时提示下面Error,求怎么解决这个问题
6801浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-18 07:27 , Processed in 1.500354 second(s), Total 107, Slave 89 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖