Я умножаю 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;
Будет ли это работать?