当前位置:编程学习 > JAVA >>

计算机做以下哪种运算快

计算机做哪种运算快?
A.逻辑判断    B.算数运算   
C.关系运算    D.赋值运算

请排序  并给出理由 --------------------编程问答-------------------- 随便猜个,C。mark,看看答案。 --------------------编程问答-------------------- 这和java没关系了。推到首页看看答案 --------------------编程问答-------------------- DABC --------------------编程问答-------------------- 除 --------------------编程问答-------------------- D明显最快!其他的计算都需要用到二进制计算,而且你没有说明是那种判断,那种关系计算,那种算数计算。所以B应该只最慢的。C应该是第二位。
D,C,A,B --------------------编程问答-------------------- B

算数运算中的位运算最快。
比如按位与(&)、按位或(|)、按位非(~)、按位异或(^)、左移(>>)、算数右移(<<)、逻辑右移(<<<),

int a = 4 * 2; //值为8
int b = 4 << 1; //同样值为8,但运算速度快。 --------------------编程问答-------------------- --------------------编程问答-------------------- 分析8086的指令集就知道了。 --------------------编程问答-------------------- D 赋值自然最快
A B 算数运算有协处理器支持,但仍需有赋值
C 不知道 关系运算 是指什么

度娘说:
关系的基本运算有两类:一类是传统的集合运算(并、差、交等),另一类是专门的关系运算(选择、投影、连接、除法、外连接等),有些查询需要几个基本运算的组合,要经过若干步骤才能完成。 --------------------编程问答-------------------- 这题描述其实不太准确,高级语言的一条语句(比如赋值),映射到汇编/机器层面,其实有好几条语句,而且根据编译器的翻译/优化,是可以选择不同的汇编来实现语句(比如用条件跳转来实现逻辑判断),那么这里暂且假设问题问的是汇编层面最核心的那条语句。
以下以x86为基础描述:
逻辑判断:AND
算数运算:ADD
关系运算:JE
赋值运算:MOV
即使如此,每条汇编码又根据操作数(内存还是寄存器),是多少位的机器,还是有差异。
所以,最好是具体的代码,具体分析。 --------------------编程问答-------------------- http://software.intel.com/zh-cn/articles/book-Processor-Architecture_CPU_work_process --------------------编程问答-------------------- 我觉得D赋值运算应该是最快的 --------------------编程问答-------------------- 呵呵,最近恰好在看计算机系统方面的东西,了解一点汇编。说一下我的观点:
首先声明,我以前从没学过汇编,只是最近才接触,就现炒现卖了,不一定正确,勿喷,谢谢

DB(AC)
D的复制运算我觉得是最快的,在计算机里就是一个mov指令,就是数据的传递
B算数运算,其实这个也不能绝对,因为要具体情况具体分析,简单的加减肯定非常快,因为CPU有对应的指令,求模、整数乘积和整数除法也是比较快的,因为处理器在处理的时候转换成加法和位运算,这个CPU有对应的指令
逻辑判断和关系运算我觉得有些笼统花了,这个排序真不好说
关系运算是指大于小于和等于这些关系的话,80X86的CPU也有对应的指令,(sete,seth等)
逻辑判断是值逻辑与或非吗?这些也有相应的指令。

笼统的说我觉得是逻辑判断要大于关系运算,从各个指令需要的时钟数来感性判断。。。
所以我的排序是
DBAC

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


位操作比运算速度快 --------------------编程问答-------------------- A≈C≧D≧B
不解释
--------------------编程问答--------------------
引用 17 楼 DelphiGuy 的回复:
A≈C≧D≧B
不解释

求解释!求科普! --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 到底是哪类运算快呢。 --------------------编程问答--------------------
引用 楼主 wuyanxue 的回复:
计算机做哪种运算快?
A.逻辑判断    B.算数运算   
C.关系运算    D.赋值运算

请排序  并给出理由

分析下把,算数最慢没得说了,涉及到浮点就不是那点点指令周期能完事的玩意儿。
关系运算如果理解成a和b比较大小之类的话,C,D速度差不多,如果算数仅仅是加减并且没有溢出处理的话和cd差不多,有溢出处理自然会慢点
逻辑判断arm都能2条指令搞定  --------------------编程问答--------------------
引用 楼主 wuyanxue 的回复:
计算机做哪种运算快?
A.逻辑判断    B.算数运算   
C.关系运算    D.赋值运算

请排序  并给出理由


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

软件优化和硬件执行的差异不得不刨出来... --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 感觉最快是D --------------------编程问答-------------------- 赋值最快,如果逻辑判断只是判断布尔值,肯定其次。
算数这是计算机强项啊,至于关系运算这要看算法优劣了,
所以:

由快到慢: D>A>B>C
--------------------编程问答-------------------- 同意10楼,没有可比性.

看看指令集就知道了,操作数各不相同,那取指/取数据的时间就不确定,所以D可能比A长,也可能比A短,或者一样.
其他类似. --------------------编程问答-------------------- 学习了。。。。。。 --------------------编程问答-------------------- 谢谢分享!!!加油 --------------------编程问答-------------------- A.逻辑判断    B.算数运算   
C.关系运算    D.赋值运算

int i=1; //这个比较快
User u = new User(); //这个会比 i>>2更快? --------------------编程问答-------------------- 这和java没关系了。推到首页看看答案 --------------------编程问答-------------------- int i=1; //这个比较快
 User u = new User(); //这个会比 i>>2更快? --------------------编程问答-------------------- 我觉得,相对来说,还是处理图片之类的慢一些 --------------------编程问答-------------------- 逻辑运算,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。

--------------------编程问答-------------------- 涨知识了。 --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 基本同意DelphiGuy,除了有一点补充:
赋值运算,如果算是写到内存的话,那肯定是最慢的,powewrpc上100多周期。
如果算写入cache,前几年的powerpc是3个周期,最近是1个周期。

但是无论哪种,都不太可能小于1。如果算超标量,就算每个周期抓取多条写指令,至少我所看到的cpu里面的load/sotre单元个数,总是小于取指令单元个数的。所以如果全是store指令,一段时间以后,流水线会塞满。这样,哪怕全都命中cache,写操作的平均时间就和单个写一样。

欢迎讨论。 --------------------编程问答-------------------- 当然,如果load/sotre单元个数,大于取指令单元个数,那长期是小于1的。不过这样设计有点奇怪。不知道有没有cpu是这样的。 --------------------编程问答-------------------- 长见识了!谢谢 --------------------编程问答-------------------- 应该是逻辑判断 --------------------编程问答-------------------- d  b  a   c --------------------编程问答-------------------- 都比较快。new一个对象比较慢。比较这四种有没有意义是个问题。java思想的一点就是不为技术而技术。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- --------------------编程问答-------------------- 个人实践证明 ACDB快 --------------------编程问答-------------------- 长见识了!谢谢 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 这题太扯淡了,计算机组成未知,CPU结构未知,指令集未知,源语言未知。
这种问题只能回答无可奉告。
我完全可以自行设计计算机,让4种中任意一个最快。
--------------------编程问答-------------------- 赋值运算看起来是最快的,但是要考虑到给谁赋值,如果是给寄存器,肯定是最快的,但如果是内存,就需要多次读取存储器来定位地址,比如访问页表,而且主存离cpu很远,很可能需要安排多次时钟周期才能完成赋值。算数运算肯定大于逻辑运算和关系运算,特别是如果涉及浮点运算,还需要专门的协处理器来完成。从硬件的角度看,逻辑运算和关系运算的电路实现应该是类似的。 --------------------编程问答-------------------- 应该是赋值是最快吧! --------------------编程问答--------------------
引用 6 楼 u010134240 的回复:
B

算数运算中的位运算最快。
比如按位与(&)、按位或(|)、按位非(~)、按位异或(^)、左移(>>)、算数右移(<<)、逻辑右移(<<<),

int a = 4 * 2; //值为8
int b = 4 << 1; //同样值为8,但运算速度快。


你说这个太扯了  完全是理论   实际没区别 --------------------编程问答-------------------- 赋值最快  汇编里的MOV --------------------编程问答-------------------- 不知道 --------------------编程问答-------------------- 得划定下范围,单说计算机没法比较。 --------------------编程问答-------------------- 赋值运算应该是最快的,算数运算最慢,另外两个的效率,就不太清楚了。。。。 --------------------编程问答-------------------- 赋值运算指的是什么?是直接给寄存器赋值,还是需要访存?算术运算是只是计算的过程,还是要把结果保存到寄存器? --------------------编程问答-------------------- 条件不足。无法比较。 --------------------编程问答-------------------- 问的太笼统了

首先赋值如果需要写内存的话明显是最慢的, 寄存器赋值当然是最快的.

算术和逻辑类似, 如果仅仅执行寄存器操作的话大体相当, 但逻辑应该稍快.

关系有很多种, 这个我不确定, 但应该不会比算术快, 感觉如果同为寄存器运算, 这个是最慢的. --------------------编程问答-------------------- 支持10楼
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,