《编写高质量代码:改善c程序代码的125个建议》——建议12-4:用移位运算实现乘除法运算

简介:

本节书摘来自华章计算机《编写高质量代码:改善c程序代码的125个建议》一书中的第2章,建议12-4作者:马 伟 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

建议12-4:用移位运算实现乘除法运算

用移位运算来实现乘除法运算的方法,相信大家并不陌生,实际上有很多C编译器都能够自动地做好这个优化。通常,如果需要乘以或除以2n,都可以用移位的方法代替。
例如:

a=a*2;
b=b/2;

可以修改为如下形式:

a=a<<1; 
b=b>>1;

其中,除以2等价于右移1位,乘以2 等价于左移1位。同理,除以4等价于右移2位,乘以4 等价于左移2位;除以8等价于右移3位,乘以8 等价于左移3位,以此类推。
其实,利用上面的原理,只要是乘以或除以一个整数,均可以用移位运算的方法来得到结果,例如:

a=a*5;

可以将其分解为a(4+1),即a4+a*1。由此,我们就可以很简单地得到下面的程序表
达式:

a=(a<<2)+a
相关文章
|
关系型数据库 MySQL 数据库
rds备份与恢复
rds备份与恢复
722 3
|
监控 应用服务中间件 API
API 网关的功能用途及实现方式
API 网关的功能用途及实现方式
|
安全 Shell Linux
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
667 0
|
10月前
|
数据采集 自然语言处理 数据库
深入体验阿里云通义灵码:测试与实例展示
阿里云通义灵码是一款强大的代码生成工具,支持自然语言描述需求,快速生成高质量代码。它在测试、代码质量和用户体验方面表现出色,能够高效地生成 Python 和 Java 等语言的代码,助力开发者提升开发效率和代码质量。无论是新手还是资深开发者,都能从中受益匪浅。
深入体验阿里云通义灵码:测试与实例展示
|
10月前
|
缓存 监控 Linux
|
11月前
【LVGL快速入门】SquareLine Studio安装教程(LVGL官方工具)
【LVGL快速入门】SquareLine Studio安装教程(LVGL官方工具)
2890 0
|
12月前
|
存储 监控 NoSQL
MongoDB的应用场景非常广泛
MongoDB的应用场景非常广泛
411 6
|
机器学习/深度学习 数据采集 算法
Python实现Catboost分类模型(CatBoostClassifier算法)项目实战
Python实现Catboost分类模型(CatBoostClassifier算法)项目实战
|
消息中间件 Prometheus Kubernetes
K8S的Kafka监控(Prometheus+Grafana)
本文实战操作如何在K8S环境对kafka做监控(Prometheus+Grafana)
809 0
K8S的Kafka监控(Prometheus+Grafana)
|
监控 NoSQL 程序员
Redis 高可用篇:你管这叫 Sentinel 哨兵集群原理
Redis 高可用篇:你管这叫 Sentinel 哨兵集群原理
241 5