Jos*_* D. 2 c c++ java endianness bitwise-operators
请考虑以下代码:
long store;
int firstValue = 0x1234;
int secondValue = 0x5678;
store = (((long) firstValue) << 32) | secondValue;
Run Code Online (Sandbox Code Playgroud)
为store保证具有价值0x12345678,无论机器的字节序的......
所有这些语言中的bitshift操作都在数字上运行.字节序不是数字的属性.
在Java store保证具有价值0x123400005678L,因为0x1234L << 32是0x123400000000L.
在C和C++ store中不保证具有任何特定值:结果取决于所涉及类型的大小,并且由于溢出而具有潜在的未定义行为(long允许小到32位,实际上它是如此)一些主流实现).如果没有发生溢出,则结果与Java中的结果相同.
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |