#javascript
#javascript
Вопрос:
Я пытаюсь выяснить некоторые различия между C # и Javascript. Хорошо, возьмем этот код на Javascript:
var j = 0x783a9b23;
var bt = ((16843134 ^ (16843134 - 1)) * j);
После выполнения этого «bt» будет 6051320169.
Теперь, после выполнения этого в C#:
int j = 0x783a9b23;
int bt = ((16843134 ^ (16843134 - 1)) * j);
«bt» будет равно 1756352873. Конечно, не то же самое. Есть идеи, почему Javascript не видит, как это видит C #?
Ответ №1:
Вы можете сделать это, чтобы заставить его работать как в C#
var j = 0x783a9b23;
var bt = ((16843134 ^ (16843134 - 1)) * j);
bt = bt % 2147483647
Это потому, что в c # ваше целое число превышает предел в 2 147 483 647.
Комментарии:
1. 1 или
int bt = checked((16843134 ^ (16843134 - 1)) * j);
для выявления переполнения2. Вау, это мило. Я всегда так долго брал этот материал для granit до сих пор, когда мне действительно нужно понять вещи более низкого уровня, поскольку я конвертирую некоторый шахматный код в Javascript просто как упражнение, чтобы узнать больше. Миллион благодарностей.