【发布时间】:2017-06-20 09:24:14
【问题描述】:
按位移位运算符的 ISO C99 标准对左移有如下说明:
E1
我不明白在位移位的上下文中,“比结果类型中可表示的最大值多模减少一”是什么意思。
【问题讨论】:
-
意思是如果 E1 * 2^E2 太大而无法放入结果类型,则使用模运算将其减少。例如,如果您的结果类型是合理平台上的无符号 32b 整数,则上述数学将减少模 2^32。 (2^32 - 1) 是结果类型中可表示的最大值,因此将减去该值加 1(即 - 2^32)。
-
将不适合结果的位切掉是一种更复杂的说法。
标签: c binary bit-manipulation