C/C++用移位实现乘除法运算,提高运行效率
来源:互联网 发布:网络安全技术产品 编辑:程序博客网 时间:2024/04/28 21:55
C/C++用移位实现乘除法运算,提高运行效率
用移位实现乘除法运算
a=a*4;
b=b/4;
可以改为:
a=a<<2;
b=b>>2;
说明:
除2 = 右移1位 乘2 = 左移1位
除4 = 右移2位 乘4 = 左移2位
除8 = 右移3位 乘8 = 左移3位
... ...
通常如果需要乘以或除以2的n次方,都可以用移位的方法代替。
大部分的C编译器,用移位的方法得到代码比调用乘除法子程序生成的代码效率高。
实际上,只要是乘以或除以一个整数,均可以用移位的方法得到结果,如:
a=a*9
分析a*9可以拆分成a*(8+1)即a*8+a*1, 因此可以改为: a=(a<<3)+a
a=a*7
分析a*7可以拆分成a*(8-1)即a*8-a*1, 因此可以改为: a=(a<<3)-a
关于除法读者可以类推, 此略.
a=a*4;
b=b/4;
可以改为:
a=a<<2;
b=b>>2;
说明:
除2 = 右移1位 乘2 = 左移1位
除4 = 右移2位 乘4 = 左移2位
除8 = 右移3位 乘8 = 左移3位
... ...
通常如果需要乘以或除以2的n次方,都可以用移位的方法代替。
大部分的C编译器,用移位的方法得到代码比调用乘除法子程序生成的代码效率高。
实际上,只要是乘以或除以一个整数,均可以用移位的方法得到结果,如:
a=a*9
分析a*9可以拆分成a*(8+1)即a*8+a*1, 因此可以改为: a=(a<<3)+a
a=a*7
分析a*7可以拆分成a*(8-1)即a*8-a*1, 因此可以改为: a=(a<<3)-a
关于除法读者可以类推, 此略.
0 0
- C/C++用移位实现乘除法运算,提高运行效率
- C/C++用移位实现乘除法运算,提高运行效率
- C/C++用移位实现乘除法运算,提高运行效率
- C/C++中移位实现乘除法运算
- C/C++中移位实现乘除法运算
- C/C++中移位实现乘除法运算
- C/C++中移位实现乘除法运算
- C/C++ 移位运算代替乘除法
- C/C++用移位实现除法运算
- 移位实现乘除法
- 用+,-,移位实现除法运算
- 用+,-,移位实现除法运算
- 使用移位运算和加减法实现乘除法
- 移位实现的乘除法
- 移位实现的乘除法
- C语言中乘除法与移位关系
- c语言移位除法
- C语言大数运算-乘除法篇
- hdu-4533-威威猫系列故事――晒被子----
- Android SDK更新以及ADT更新出现问题的解决办法
- UVA - 11991 Easy Problem from Rujia Liu?
- projecteuler No.145 How many reversible numbers are there below one-billion?
- Netty源码解读(四)Netty与Reactor模式
- C/C++用移位实现乘除法运算,提高运行效率
- 美玉无瑕--美家手动铭玉博物馆
- c语言基础之指针
- cvCreateTrackbar
- 基于node.js+ MongoDB的mircoblog,完成参考《Node.js开发指南》的mircoblog
- <zz>计算机视觉和模式识别领域SCI期刊介绍
- DB2查看配置
- 《设计模式》读书笔记:策略模式
- nyoj58 最少步数