我正在乘以 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;

这会起作用吗?

最佳答案

在数字之后添加 LL (例如 3765450781LL ),否则它们会被计算为 int s,其余的在分配给 d 之前被砍掉。

关于c++ - 抓取 8 字节字的高 4 字节,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5924980/

10-11 23:17
查看更多