黑马程序员技术交流社区

标题: 最有效率的算数方法 [打印本页]

作者: 刘博    时间: 2011-12-27 12:46
标题: 最有效率的算数方法
本帖最后由 刘博 于 2011-12-27 17:20 编辑

在网上发现了一个小问题,让用最有效率的方法算出8乘以2等于几,说一般有c语言开发经历的人会这么问,这个题的正确答案是什么呢?很迷惑
作者: yunqiangshan    时间: 2011-12-27 13:18
用左移移位符就可以了,8<<2,就等效于8*2,直接乘的话需要先将两个数都转成二进制进行运算,需要运算的位数较多,比较低效,移位的话只要将转成二进制的8的最后一位后面再加个零就可以了,所以运算速度很快。
作者: 曾运    时间: 2011-12-27 13:34
计算机中数据都是二进制0  和 1保存的,所以移位的算法效率是最高的 8*2等价于 8向左移动1位即是 8*(2^0)=16
如图示:

作者: 刘建宇    时间: 2011-12-27 15:39
8<<1就可以了,右移几位就等于乘以二的几次方,左移几位就是除以二的几次方,这是比较高效的
作者: 房宝彬    时间: 2011-12-27 15:48
也就是这一种解释:8*2需要将2个数先转换成二进制在运算。如果你用“移位符”直接表示用二进制运算。
作者: 刘博    时间: 2011-12-27 17:18
刘建宇 发表于 2011-12-27 15:39
8

谢谢小哥了,可是你是不是说反了呢?应该是左移是乘,右移是除吧?
作者: 刘建宇    时间: 2011-12-29 14:33
刘博 发表于 2011-12-27 17:18
谢谢小哥了,可是你是不是说反了呢?应该是左移是乘,右移是除吧?

对 呵呵
作者: 付星    时间: 2011-12-29 17:36
对于8*2,最有效的方法是8<<1,cpu是对位直接支持的,你可以把1看成2的1次方,所以说左移的乘法只对2的倍的数有用,不是2的倍数千万别用




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2