假设有两台机器,一台使用小端,另一台使用大端,它们执行数字的按位移位。
unsigned int a = 0x80000000;
unsigned int b = a >> (sizeof(int) * CHAR_BIT) - 1; // <-- Будет ли результат одинаковый на обеих машинах? (1)
两台机器上的结果会一样吗?
笔记。 最近,我问了一个类似的问题(关于一般的位运算,答案非常简单明了,这是合乎逻辑的),但我不确定这个答案是否适用于位移位。
是的,结果不取决于字节顺序。(从某种意义上说,数字是相同的,但内存中的表示当然会不同。)
<<
>>
标准中的和是通过算术运算定义的 - 乘以/除以 2 的幂等。http://eel.is/c++draft/expr.shift