黑马程序员技术交流社区

标题: 和大家分享一个面试小问题! [打印本页]

作者: jtshawn    时间: 2014-9-21 10:24
标题: 和大家分享一个面试小问题!
本帖最后由 jtshawn 于 2014-9-21 10:41 编辑

怎么用最有效的方法算出2乘以几等于16?
作者: 风无向梦无痕    时间: 2014-9-21 10:38
16/2  这个够高效了吧!呵呵
作者: T-l-H、小生    时间: 2014-9-21 10:40
这样的问题你也问得出来?
作者: jtshawn    时间: 2014-9-21 10:41
风无向梦无痕 发表于 2014-9-21 10:38
16/2  这个够高效了吧!呵呵

...  你在逗我吧!最高效的是位运算
作者: 风无向梦无痕    时间: 2014-9-21 10:43
jtshawn 发表于 2014-9-21 10:41
...  你在逗我吧!最高效的是位运算

其实我不知道  嘿嘿
作者: jtshawn    时间: 2014-9-21 10:45
风无向梦无痕 发表于 2014-9-21 10:43
其实我不知道  嘿嘿

其实我也是随便发发,赚点经验
作者: jtshawn    时间: 2014-9-21 10:47
风无向梦无痕 发表于 2014-9-21 10:43
其实我不知道  嘿嘿

其实我就是赚点经验
作者: 许愿じ☆VE杰    时间: 2014-9-21 10:47
位移,我也是为了赚金币
作者: 高泳    时间: 2014-9-21 10:49
不懂,!~= =
作者: 雨下阳光    时间: 2014-9-21 10:50
视频里有讲过
作者: 杨佳名    时间: 2014-9-21 11:07
class  Noname1
{
        public static void main(String[] args)
        {
                long x=System.currentTimeMillis();
                for(long i=0;i<900000000;i++)
                {
                        int a = 16/2;
                }
                long y=System.currentTimeMillis();
                System.out.println("a打印的时间 :"+(y-x));
               

                long m=System.currentTimeMillis();               
                for(long i=0;i<900000000;i++)
                {
                        int b = 16>>1;
                }
                long n=System.currentTimeMillis();
                System.out.println("b打印的时间 :"+(n-m));


        }
}
我是刚开始学的,看楼主问完自己去敲了敲到现在。刚开始也以为是位运算比较快,然后就自己去写了。运行后没发现位运算能快多少,不知道这样做对不对望论坛各位大神指点
作者: 杨佳名    时间: 2014-9-21 11:10
运行结果图

QQ图片20140919131952.jpg (49.7 KB, 下载次数: 83)

QQ图片20140919131952.jpg

作者: Cacerine    时间: 2014-9-21 11:18
位运算``````````
因为计算中存放的都是数据的二进制的补码
所以通过位运算是最快的

作者: 就是现在    时间: 2014-9-21 11:24
位运算,毫无疑问,
作者: jtshawn    时间: 2014-9-21 11:25
杨佳名 发表于 2014-9-21 11:07
class  Noname1
{
        public static void main(String[] args)

数据小了,运行效率体现不明显
作者: 18643448863    时间: 2014-9-21 11:27
那就向右位一个  就行了呗
作者: 杨佳名    时间: 2014-9-21 11:30
jtshawn 发表于 2014-9-21 11:25
数据小了,运行效率体现不明显

嗯,这样也能看出是位运算有优势,不是很明显罢了。若数据多肯定还是要位运算
作者: 伍建雄    时间: 2014-9-21 11:49
小心水贴。。
作者: 陈云阳    时间: 2014-9-21 16:51
本帖最后由 陈云阳 于 2014-9-21 16:53 编辑

最效率的是直接用cpu寄存器进行运算
    mov ax,2;
    mov cx,3
a: add ax,2
     loop a;
作者: 挥斥方遒    时间: 2014-9-21 17:19
不懂。。。。。。
作者: 霜林醉zhx    时间: 2014-9-22 02:05
计算机不是最快的,最快的是人的大脑,你看一眼就知道是8了




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