我正在《CSAPP》一书中读到有关 k 移位的内容,对于 k 值较大的情况。它正在讨论将由 w 位组成的数据类型移位某个值 k >= w 会产生什么影响。它指出了以下行:
“在许多机器上,移位指令在移位 w 位值时仅考虑移位量的较低 log_2 w 位,因此移位量实际上计算为 k mod w。”
虽然我确实理解 k mod w 部分,但我不明白 CSAPP 的移位量的较低 log_2 w 位意味着什么。我在想,如果我们在 32 位机器上有一个整数,我们想要向左移动 36 个单位,那么我们会将它移动 36 mod 32,即向左移动 4 位。我不确定这如何等于移位量的较低 log_2 32 位 = 5 位。
认为 k 是 36(二进制为 100100),而 w 是 32。 这句话的意思是“k mod w”与“仅考虑较低的log_2 w,即k的5位”完全相同。