这和java没关系了。推到首页看看答案

解决方案 »

  1.   

    D明显最快!其他的计算都需要用到二进制计算,而且你没有说明是那种判断,那种关系计算,那种算数计算。所以B应该只最慢的。C应该是第二位。
    D,C,A,B
      

  2.   

    B算数运算中的位运算最快。
    比如按位与(&)、按位或(|)、按位非(~)、按位异或(^)、左移(>>)、算数右移(<<)、逻辑右移(<<<),int a = 4 * 2; //值为8
    int b = 4 << 1; //同样值为8,但运算速度快。
      

  3.   

    D 赋值自然最快
    A B 算数运算有协处理器支持,但仍需有赋值
    C 不知道 关系运算 是指什么度娘说:
    关系的基本运算有两类:一类是传统的集合运算(并、差、交等),另一类是专门的关系运算(选择、投影、连接、除法、外连接等),有些查询需要几个基本运算的组合,要经过若干步骤才能完成。
      

  4.   

    这题描述其实不太准确,高级语言的一条语句(比如赋值),映射到汇编/机器层面,其实有好几条语句,而且根据编译器的翻译/优化,是可以选择不同的汇编来实现语句(比如用条件跳转来实现逻辑判断),那么这里暂且假设问题问的是汇编层面最核心的那条语句。
    以下以x86为基础描述:
    逻辑判断:AND
    算数运算:ADD
    关系运算:JE
    赋值运算:MOV
    即使如此,每条汇编码又根据操作数(内存还是寄存器),是多少位的机器,还是有差异。
    所以,最好是具体的代码,具体分析。
      

  5.   

    http://software.intel.com/zh-cn/articles/book-Processor-Architecture_CPU_work_process
      

  6.   

    呵呵,最近恰好在看计算机系统方面的东西,了解一点汇编。说一下我的观点:
    首先声明,我以前从没学过汇编,只是最近才接触,就现炒现卖了,不一定正确,勿喷,谢谢DB(AC)
    D的复制运算我觉得是最快的,在计算机里就是一个mov指令,就是数据的传递
    B算数运算,其实这个也不能绝对,因为要具体情况具体分析,简单的加减肯定非常快,因为CPU有对应的指令,求模、整数乘积和整数除法也是比较快的,因为处理器在处理的时候转换成加法和位运算,这个CPU有对应的指令
    逻辑判断和关系运算我觉得有些笼统花了,这个排序真不好说
    关系运算是指大于小于和等于这些关系的话,80X86的CPU也有对应的指令,(sete,seth等)
    逻辑判断是值逻辑与或非吗?这些也有相应的指令。笼统的说我觉得是逻辑判断要大于关系运算,从各个指令需要的时钟数来感性判断
    所以我的排序是
    DBAC
      

  7.   

    int a,b=0;
    A.逻辑判断:!a;
    B.算术运算:a+b;   
    C.关系运算:a>b;
    D.赋值运算:a=0;
    A=B=C>D
    1、纠正一下:是算术运算符不是算数运算符
    2、扫下盲:
       算术运算符包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
       位操作运算符包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
    3、友情提示:位操作不比算术运算快
       
      

  8.   

    分析下把,算数最慢没得说了,涉及到浮点就不是那点点指令周期能完事的玩意儿。
    关系运算如果理解成a和b比较大小之类的话,C,D速度差不多,如果算数仅仅是加减并且没有溢出处理的话和cd差不多,有溢出处理自然会慢点
    逻辑判断arm都能2条指令搞定 
      

  9.   

    赋值最快,如果逻辑判断只是判断布尔值,肯定其次。
    算数这是计算机强项啊,至于关系运算这要看算法优劣了,
    所以:由快到慢: D>A>B>C
      

  10.   

    同意10楼,没有可比性.看看指令集就知道了,操作数各不相同,那取指/取数据的时间就不确定,所以D可能比A长,也可能比A短,或者一样.
    其他类似.
      

  11.   

    A.逻辑判断    B.算数运算   
    C.关系运算    D.赋值运算int i=1; //这个比较快
    User u = new User(); //这个会比 i>>2更快?
      

  12.   

    这和java没关系了。推到首页看看答案
      

  13.   

    int i=1; //这个比较快
     User u = new User(); //这个会比 i>>2更快?
      

  14.   

    逻辑运算,and or not xor等等,有专用电路直接实现,也就是所谓的逻辑门电路,而且结构简单,比数字比较器、桶形移位器要简单,通常情况下速度更快一些。
    关系运算,> < = >= <= <>等等,也有专用电路(数字比较器)可以实现,运算速度也是比较快的。
    赋值,不管什么架构的处理器肯定都有这种指令,而且是使用频繁的指令,经过高度优化的,速度也是相当快的(在超标量架构下其等效时钟周期可以小于1)。
    算术运算,种类太多,+ - << >>运算速度很快,接近逻辑和关系运算,但是* /慢很多,尤其是除法指令。如果涉及到浮点运算,就更慢了。
    所以综合来说,运算速度A≈C≧D≧B(实际上在传统计算机中,应该是A≧C≧D≧B,不过在较新的架构中,比如intel core架构,比较+分支优化得很厉害,基本和逻辑运算相当)但是只能说理论上如此,具体到实际指令,情况还很复杂,操作数使用寄存器、内存、立即数还有分别,即便同样的操作,比如mov,mov r,r/i就比mov r,m快,而mov r,m比mov m,r快。
    就我所知,在目前的intel架构中,最快的指令是xor eax,eax这类指令(注意不是普通的xor,而是源操作数和目的操作数使用同一寄存器,清0操作),延迟只有1个时钟周期,吞吐量达到4(意味着最多可以并行4条这种指令),要快于mov eax,0。
      

  15.   

    基本同意DelphiGuy,除了有一点补充:
    赋值运算,如果算是写到内存的话,那肯定是最慢的,powewrpc上100多周期。
    如果算写入cache,前几年的powerpc是3个周期,最近是1个周期。但是无论哪种,都不太可能小于1。如果算超标量,就算每个周期抓取多条写指令,至少我所看到的cpu里面的load/sotre单元个数,总是小于取指令单元个数的。所以如果全是store指令,一段时间以后,流水线会塞满。这样,哪怕全都命中cache,写操作的平均时间就和单个写一样。欢迎讨论。
      

  16.   

    当然,如果load/sotre单元个数,大于取指令单元个数,那长期是小于1的。不过这样设计有点奇怪。不知道有没有cpu是这样的。
      

  17.   

    d  b  a   c
      

  18.   

    都比较快。new一个对象比较慢。比较这四种有没有意义是个问题。java思想的一点就是不为技术而技术。
      

  19.   

    这题太扯淡了,计算机组成未知,CPU结构未知,指令集未知,源语言未知。
    这种问题只能回答无可奉告。
    我完全可以自行设计计算机,让4种中任意一个最快。
      

  20.   

    赋值运算看起来是最快的,但是要考虑到给谁赋值,如果是给寄存器,肯定是最快的,但如果是内存,就需要多次读取存储器来定位地址,比如访问页表,而且主存离cpu很远,很可能需要安排多次时钟周期才能完成赋值。算数运算肯定大于逻辑运算和关系运算,特别是如果涉及浮点运算,还需要专门的协处理器来完成。从硬件的角度看,逻辑运算和关系运算的电路实现应该是类似的。