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