考虑表达式x>> y,这里x是signed int,最左边的位是1那么结果取决于机器? 我已经尝试了签名int,最左边的位是0我得到了相同的结果,但我不知道给定的情况。
答案 0 :(得分:2)
没有明确的“最左边”或“最右边”位(取决于约定),但是最重要和最不重要的位。 2的补码机上的符号位是最重要的位。
>>
,则 unsigned
使用零扩展。
正符号值的行为类似于正无符号值。但是,负数量的>>
是实现定义的,但无论我在何处使用它,负数都已经过符号扩展。
此外,将某些内容左移到符号数量的符号位是未定义的行为,因此对于大多数可移植程序,最好只使用bithift技巧来表示无符号值。