经由51蛋骗鸡程序验证用除法减法乘法影响延时较小。
学习最基础的东西有益与理解高级的东西,因为有了基础的支持,学习51的确让我更理解最基础的东西,比如硬件带的加减乘除法器是基础,求余运算是在这个基础上扩展来的,由于写法不同,求余运行的效果就不同,比如可直接调用人家写好了的%运算符,但我喜欢直接用加减乘除法求余其速度更胜于调用%运算符,为什么?因为理解其基础原理,%运算符其内中是怎么实现的没去深究,但从2种运行速度足可验证理解和应用基础有意义。
void 不用求余分解整数()
{//不用求余分解整数,缘由51蛋骗鸡求余运算周期严重影响延时,重新设计分解整数,提高效率已验证。
int a = 123456789, j = a;
while (a)cout << (j - (a /= 10) * 10) << ends, j = a;
}
int 除法乘法减法求余(int shu, int mo)
{
int yu = shu;
return (yu -= (yu / mo) * mo);
}
int a = 13579;
while (a)cout << a << ends << 除法乘法减法求余(a, 2) << ends , (a /= 10);
#include "reg52.h"
unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴0~15
void main()
{
unsigned char Xd=0,hmq=0;
unsigned int Ys=47474, a=65432,j=a;
while(1)
{
if(++hmq>=247){bipo=~bipo;hmq=0;}//较少影响延时时间
if(--Ys==0)
{
Ys=47474;
P2=~smgduan[(j - (a /= 10) * 10)];//数码管静态显示
if(!a)j=a=65432;else j = a;
}
// if(Ys%4747==0)bipo=~bipo;//使用求余运算花费较多时钟周期严重影响延时时间
}
}