Я делаю некоторые преобразования кода из JavaScript в Java. При запуске процесса какой-то побитовой операции, я обнаружил, что поведение побитовой операции между javascript и java настолько разное. Я относительно опытен в JVM, мне кажется, что операция нормальная. Но в части JavaScript, я немного запутался. Я проверил MDN на mozilla , приведенная демонстрация кажется мне нормальной, но я обнаружил, что дело не так, как ожидалось.
Вопрос:
Не могли бы вы объяснить, почему побитовая операция и код, который я прикрепил, так различны в javascript и java?
Кроме того, я знаю, что моих знаний в javascript недостаточно для выполнения какого-либо преобразования кода между этими двумя языками, есть ли полезный сайт, который помогает мне лучше пониматьна побитовую операцию или структуру данных числовых данных в JavaScript?
Java-код
Long x = 4023233417L;
System.out.println(String.format("%d => %s",x, Long.toBinaryString(x)));
Long y = 2562383102L;
System.out.println(String.format("%d => %s",y, Long.toBinaryString(y)));
Long result = x & y;
System.out.println(String.format("%d => %s",result, Long.toBinaryString(result)));
//Output
//4023233417 => 11101111110011011010101110001001
//2562383102 => 10011000101110101101110011111110
//2290649224 => 10001000100010001000100010001000
Javascript code
x= 4023233417
console.log(x.toString(2))
y = 2562383102
console.log(y.toString(2))
result = x & y
console.log(result.toString(2))
//Output
//11101111110011011010101110001001
//10011000101110101101110011111110
//-1110111011101110111011101111000
Я ожидаю, что x & y должен "10001000100010001000100010001000".
Но в коде JavaScript, результат: «-1110111011101110111011101111000»