【发布时间】:2012-11-12 17:30:55
【问题描述】:
我试图了解按位运算符对有符号和无符号类型的行为。根据 ISO/IEC 文件,以下是我的理解。
左移运算符
E1 << E2的结果,是E1左移E2位左移帐户中空出的位将被零填充。
-
E1 为有符号非负数:
李>E1 << E2将得到 E1 乘以 E2 的 2 次方,如果该值可以由结果类型表示。 Q1:签名的底片怎么样?
Q2:我无法理解以下上下文中“约简模”的含义。 "如果 E1 具有无符号类型,则结果的值为 E1 × 2E2 ,减少模 比结果类型中可表示的最大值大一”。
右移运算符
E1 >> E2的结果是 E1 右移 E2 位位置。E1 as signed non-negative/unsigned:结果的值是E1 / 2E2的商的整数部分
Q3:对于有符号负整数,我看到有些书定义空位将用
1填充。请详细说明右移运算符在有符号负整数上的使用。强>
【问题讨论】:
标签: c bit-manipulation bitwise-operators iso bit-shift