求余不用模
来源:互联网 发布:caffe源码解析 编辑:程序博客网 时间:2024/05/01 17:23
求余不用模
刺猬@http://blog.csdn.net/littlehedgehog
我们先来看看这个问题如果要求 9除以4余数是多少? 可能大部分人都会直接用 6%4 这样的C语言表达式吧?平时用也倒是无妨,但是在系统内核这种对速度要求极为严格的地方,这种除法运算的花销可能就有点不太值得了。
注意看下面的数学式子:
9%4=2 ——> 9&(4-1)=2 (%是取模的符号)
也即是 x%(2n)=x&(2n-1)
把上面的数字转化为二进制就好懂了:
(1001b)%(100b),取模也就是把9平均分,而平均每小份分得4,求最后一份剩下多少?
由二进制的运算特点可知,比如(1001b)%(100b),直接可以从除数位数开始在被除数中向高位截就是商,比如这里除数是3位,那么我们直接从3位开始截断被除数1001B,也就是取被除数的3、4位,即商10b,十进制为2,而余数的话就是直接以除数最高位-1 然后在被除数截断,比如这里除数是3位,那么就取2、1位,余数就是01b,有了这个理论,上面的式子就好理解了。余数的截断就是把 除数-1,然后再与被除数进行&运算,这样避免了除法指令,大大加快了运算速度。
不过这里有个注意的地方,就是我这里所指的除数有个特殊性,就是必须是2的次方,也就是必须转化为二进制是以1开头,后全为0的数!
- 求余不用模
- 求余不用模
- 素数判定(不用除法和求余)
- 求模 求余
- 取模 求余
- 求余yu求模
- 题目1047:素数判定(不用除法和求余)
- 求模和取余
- 取模 and 求余
- 模与求余方面
- 模算术和求余
- 求模和取余
- 负数求余(模)
- Mod(求模或求余)
- 求余与求模的不同
- 关于求模与求余
- 求余
- 求余
- Java IO处理类的汇总
- DataBinder.Eval(Container.DataItem,"Name")和Container.DataItem("Name")有什么区别?
- C#中用WMI获取远程计算
- 需求分析远比编码更重要
- How to make a Logical Volume ON AIX5.3
- 求余不用模
- OpenBSD 升级指南 4.2 to 4.3
- Windows xp sp3 补丁下载-cuyahoga
- XML入门(2)
- [转帖]在AIX 上MOUNT *.ISO镜像文件
- findByNamedParam,findByNamedQueryAndNamedParam的使用方法
- Java中Regex简单应用
- 算法的力量(转李开复)
- 必须掌握的八个cmd 命令行