我今天看到了这段摘录:
在大多数较旧的微处理器上,按位运算比加法和减法运算稍快,通常比乘法和除法运算快得多。在现代架构中,情况并非如此:按位运算的速度通常与加法相同(尽管仍比乘法快)。
我很好奇为什么按位运算比旧微处理器上的加法/减法运算要快一些。
我能想到的所有会导致延迟的是,实现加法/减法的电路取决于几个级别的逻辑门(并行加法器等),而按位运算的电路实现要简单得多。这是原因吗?
我知道算术和按位运算都在现代处理器上的一个时钟周期内执行,但纯粹谈谈电路的传播时间,理论上现代处理器中的延迟是否仍然存在?
最后,我有一个关于按位移位操作执行的概念性 C 问题:
unsigned x = 1;
x <<= 5;
unsigned y = 0;
y += 32;
两者x
和y
都应该保持 value 32
,但是否需要5次单独的左移才能x
达到该值(如通过管道实现的按位移位)?为了澄清,我纯粹是在询问电路行为而不是时钟周期数。