我试图了解按位运算符对有符号和无符号类型的行为。根据 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
详细说明在有符号负整数上使用右移运算符。