【发布时间】:2011-05-08 00:57:43
【问题描述】:
我正在乘以0x1d400 * 0xE070381D。
当我在计算器上执行此操作时,结果为 0x00019A4D26950400
当我尝试在 cpp 中实现它时,这就是我所拥有的。
long long d;
d = 3765450781 * 1d400;
这段代码给出的结果是d = 0x26950400。
这只是底部的 4 个字节,其他都发生了什么?
我正在尝试隔离高 4 个字节 0x00019A4D 并将它们保存到另一个变量中。如何做到这一点?
如果我可以让乘法显示所有 8 个字节,我想隔离高 4 个字节的方法是:
d = d & 0xFF00; //0xFF00 == (binary) 1111111100000000
d = d>>8;
这行得通吗?
【问题讨论】:
-
您使用的是什么操作系统和编译器?
-
你想要 16 字节还是 8 字节?您的计算器结果显示 16 个十六进制数字,即 8 个字节,而不是 16 个。
-
我认为他想要 8 个字节,但计数为 16 位。我相应地编辑了问题