跳至正文

快速成法

  • 技术

  当x乘以n的时候,一般人使用的是mul指令(即直接相乘),而我会使用位运算来优化这些速度,比如乘以3,就等于((x << 1) + x),相当于2x+x 就是3x了,然而这后者的速度比前者的速度快很多。
  乘以3只是一个情况,乘以n的话,就要把n拆分成2的次方相加,更一般地,就是把n用二进制表示,然后把位为1的进行处理,没表达清楚吧,再举个例子:5,它的二进制是101,也就是4+1,那么就可以把n5表示成4n+n,也就是((n << 2) + n),再比如8把,8*n的二进制是1000,也就是2^3,那么就可以写成(n << 3)
  现在发现位运算比很多运算要快很多!!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注