Как я могу изменить стандартную библиотеку .NET на библиотеку фреймворка .NET?

Да, modulo x % pow(2, n) может быть достигнуто с помощью x & ((1 << n) - 1)

Но% -оператор в java может давать разные результаты, если x отрицательный, поэтому слепо подставляя один для другого, может нарушить код ,

Когда бит-адресация, маскировка и т. д. обычно используется & amp; -variant, поскольку его семантически ближе к тому, что используется в ассемблере / C и подписи, обычно не требуется / не заботится в этом случае.

Что касается того, что JIT оптимизирует% до & amp ;, ответ будет: он полностью зависит от JIT - и это движущаяся цель.

В случае x % y, где y isn ' t константа его довольно трудно определить, если y является степенью 2, поэтому предположительно этот случай не оптимизируется, потому что обнаружение его очень сложно или невозможно. Если y является константой, JIT все еще доказывает, что x не является отрицательным, или вставьте условное выражение, подобное result = x < 0 ? x % y : x & (y-1). Он может или не может этого сделать, в зависимости от JIT, о котором идет речь, а также в зависимости от платформы. Как известно, в некоторых случаях Hotspot использует различные оптимизации для разных процессоров (из той же ISA, а именно AMD против Intel).

20
задан Edward Minnix 5 July 2018 в 14:28
поделиться