新手刚学C51,在写乘除法运算时,发现没法像汇编一样移位,进行带进位位,进行左移右移, 想了很久。搞了这么个东西出来, 纪念一下。
同时自己在网上也找了很多资料,都没有完全说清楚,我比较笨。
为什么要写这个呢, 因为很多低端的8位单片机用C语言并没有乘除法计算,编译器也没有进行处理。
所以的得自己写个乘除法函数。
下面是把一个数,1位1位的,左移到另外一个数,移多少位可以自定义。 右移也是一样,稍微更改下移位方向就行。
unsigned char r_beichushu=0x59; // 被除数
unsigned char r_yushu=0 ; //余数
unsigned char r_cnt;
for(r_cnt=0;r_cnt<8;r_cnt++) //左移到另一个数
{
r_yushu <<=1; //先左移1位空出第一位为0 ;
if((r_beichushu<<r_cnt) &0X80) //被除数从最高位到最低位依次判断
{
r_yushu |=1; //判断为1,则余数的第1位置1
} //判断为0,则无需操作,第1位已经是0
}