【发布时间】:2014-10-07 03:25:28
【问题描述】:
我目前正在使用 C 语言开发一个项目,当我尝试连接一些二进制数时遇到了一些问题。
uint64_t IMM = vmicxtFetch4Byte(processor, thisPC+2);
uint64_t shiftedInstr = ((uint64_t) instr16) << 32;
uint64_t instr48 = IMM | shiftedInstr;
printf("Instr16: %x IMM: %lx Instr64: %lx\n", instr16, (unsigned long) IMM, (unsigned long) instr48);
现在我得到的即时值 (IMM) 和初始指令 (instr16) 的输出是正确的,但 OR 的结果似乎并没有给我想要的结果。我预计 068200000040 但我得到了
Instr16:682 IMM:40 Instr64:40
我已经做了很多这种二进制数学,但由于某种原因,这让我很困惑。任何想法将不胜感激!
【问题讨论】: