A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 胡建伟 于 2013-8-29 20:37 编辑

下面是我自己的做法,希望各位高手能给出更有效率的方法,请附带注释哦
package com.itheima;
/**
* 2.编程计算3乘8等于几,什么方法效率更高?
* @author xiaowei
*
*/
public class Test2 {

public static void main(String args[]){
  //采用移位运算输出结果
  //System.out.println((2<<3)+(2<<2));本来想把8拆分成2的整数,不过反而麻烦
  System.out.println(3<<3);// 左移相当于乘. 左移一位相当于乘2(2^1);左移两位相当于乘4(2^2);左移三位相当于乘8(2^3)
}

}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

40 个回复

倒序浏览

回帖奖励 +1

wuliao`````
回复 使用道具 举报

回帖奖励 +1

毕老师那视频的吧,计算3*8这种左移的方法就是效率最高的了
回复 使用道具 举报
乔兵 发表于 2013-8-26 21:17
毕老师那视频的吧,计算3*8这种左移的方法就是效率最高的了

不是啦,是之前做测试题遇到的,毕老师视频也有讲啊?还没看到呢,哪一集啊?

回复 使用道具 举报
胡建伟 发表于 2013-8-26 21:21
不是啦,是之前做测试题遇到的,毕老师视频也有讲啊?还没看到呢,哪一集啊?

...

http://edu.csdn.net/main/feature/bxd_25.shtml

第二天里面有讲左移右移

回复 使用道具 举报

回帖奖励 +1

位移那部分讲的很详细,好好研究下{:soso_e130:}
回复 使用道具 举报
左移相当于乘,每左移n位就相当于是乘2的n次方。这一点在视频中讲的很详细了。其效率高是因为直接操作数据中的每一位。而使用其他常量或者变量进行运算之后得到结果的效率明显没有直接操作数据中的每一位的效率更高

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
老毕视屏DAY2说位移运算符那里好像有这个,当时没怎么看懂的
回复 使用道具 举报
就是位运算,2 << 3
回复 使用道具 举报
知道8可以是2<<<3;那3呢?
回复 使用道具 举报
直接用8移是最快的。。
加的话要经过累加器。。反而麻烦 直接存3的话是3直接走寄存器  ALU 然后直接出来 是一次
加的话是读2 到寄存器到alu,到栈 然后读1到寄存器到ALU,出来的1<<3到寄存器 ,2<<3出栈 到累加器,把寄存器的1<<3取出到累加器 。所以说 直接用3算是最快的。。而且 分开算效率要降到50%以下,可能不到40%

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报 1 0
  1.         public static void main(String[] args) {
  2.                 int x=3;
  3.                 //使用移位算法
  4.                 // 1 1 1 1 1 1 1 1
  5.                 // 0 0 0 0 0 0 1 1
  6.                 // 0 0 0 1 1 1 0 0
  7.                 System.out.println(3<<x);
  8.                 //初阶上就是3*(2*2*2)然后得出来的结果。这样就是左往移了三位
  9.                 //往左移一位就要乘以一个2的倍数。这样算就可以了
  10.         }
复制代码
回复 使用道具 举报 1 0
难道说直接乘不是最快的吗??
回复 使用道具 举报
周定宁 发表于 2014-3-10 17:07
难道说直接乘不是最快的吗??

计算机底层都是0,1代码,使用位运算就好比是直接操作计算机的底层硬件,而直接乘则是要经过一系列的转换到底层二进制代码执行,从过程来看,也知道位运算要快一些了、、、、、
回复 使用道具 举报
能运行出来吗  为什么演示的时候有错误提示啊
回复 使用道具 举报
米大米 发表于 2014-4-12 16:09
能运行出来吗  为什么演示的时候有错误提示啊

:L.............................................................
回复 使用道具 举报
其实还是毕老师讲的方法厉害,我以前都木有想到过。。。。晕菜。
回复 使用道具 举报
直接操作数据中的每一位是效率最高的一种方式了,但是题目本身没有意义
回复 使用道具 举报
这个就是左移右移的问题。
回复 使用道具 举报
不错  挺好的
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马