Проблема в том что на С++ и PHP два одинаковых кода возвращают разный результат.
//// С++
unsigned int A = 0xb7ec3d57;
unsigned int B = 0xb0000000;
A = A ^ (B >> 10);
A = A & ~B;
На выходе получаем A = 0x07ec3de7 (Как и должно быть)
////// PHP
$A = 0xb7ec3d57;
$B = 0xb0000000;
$A =$A ^ $B >> 10);
$A =$A & ~$B;
На выходе получаем A = 0x4813c2e7 (Как не должно быть)
Проблема в первом (знаковом бите) 32х битного числа 0xb7ec3d57 если указать меньшее число (так чтобы первый бит был 0) то результат будет одинаковый.
Есть ли решение этой проблемы на PHP?
//// С++
unsigned int A = 0xb7ec3d57;
unsigned int B = 0xb0000000;
A = A ^ (B >> 10);
A = A & ~B;
На выходе получаем A = 0x07ec3de7 (Как и должно быть)
////// PHP
$A = 0xb7ec3d57;
$B = 0xb0000000;
$A =$A ^ $B >> 10);
$A =$A & ~$B;
На выходе получаем A = 0x4813c2e7 (Как не должно быть)
Проблема в первом (знаковом бите) 32х битного числа 0xb7ec3d57 если указать меньшее число (так чтобы первый бит был 0) то результат будет одинаковый.
Есть ли решение этой проблемы на PHP?