c语言整形如何正确使用除法,简单的C语言移位计算整形乘法和除法值

本文介绍了如何在C语言中使用移位操作提高整数乘法和除法的效率。通过移位实现A*17的计算,以及通过模拟手动除法过程完成A/B的整数除法。代码示例展示了具体的实现细节,适用于需要优化计算速度的嵌入式或其他C语言项目。
摘要由CSDN通过智能技术生成

最近一直都没写什么文章,随便写点最近看到的东西。首先要提一点,在SOC系统中,运算速度一般是移位>乘法>除法。

1.乘法。

最简单的A*B,用C语言for循环

for(int i=0;i

这个是最容易想到的,现在用移位来实现,效率要高一点。

例子1.计算A*17

法1:A=A<<4+A;//移位一次相当于*2

法2:模拟二进制乘法手动运算,适合大整数的乘法。

以前写汇编的时候就写过,利用内存单元(1个byte)来存储乘法的一个位值。

与低位相乘,无非得到原数和0.再做一个大整数的加法,自己判断是否进位了。

大家有兴趣自己实现下。

2.除法

最简单的除法实现A/B,也是用一个for循环

for(int i=0;A>0;A-=B) i++;

移位当然只能实现2的倍数的除法了。

例子2.计算A/8

A>>3

那么计算其它的怎么办呢。本文主要是针对整形除法的,假如做浮点数运算,可以考虑如下,将其分子分母进行一定10的倍数的扩大,结果进行些处理就好了。

写了个简单的代码,模仿手动做除法的过程。

struct NUM

{

int result; //保存商的每一次减法结果

int remainder;//最后的余数

};

struct NUM divde(int div_1,int div_2)

{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值