Atomics.xor()
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с декабря 2021 года.
Статический метод Atomics.xor() вычисляет побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) с заданным значением в заданной позиции в массиве и возвращает старое значение в этой позиции. Эта атомарная операция гарантирует, что никакая другая запись не произойдет до тех пор, пока измененное значение не будет записано обратно.
Синтаксис
Atomics.xor(typedArray, index, value)
Параметры
-
typedArray - Целочисленный типизированный массив. Один из
Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,BigInt64Array, илиBigUint64Array. -
index - Позиция в
typedArrayдля вычисления побитового ИСКЛЮЧАЮЩЕГО ИЛИ. -
value - Число, с которым вычисляется побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ.
Возвращаемое значение
Старое значение в заданной позиции (typedArray[index]).
Исключения
-
TypeError - Вызывается, если
typedArrayне является одним из разрешенных целочисленных типов. -
RangeError - Вызывается, если
indexнаходится вне границ вtypedArray.
Описание
Побитовая операция ИСКЛЮЧАЮЩЕЕ ИЛИ дает 1, если a и b различны. Таблица истинности для операции XOR:
a | b | a ^ b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Например, побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ 5 ^ 1 приводит к 0100, что в десятичной системе равно 4.
5 0101 1 0001 ---- 4 0100
Примеры
Обратите внимание, что эти примеры не могут быть запущены непосредственно из консоли или произвольной веб-страницы, поскольку SharedArrayBuffer не определен, если не соблюдены его требования безопасности.
Использование Atomics.xor()
// Create a SharedArrayBuffer with a size in bytes const sab = new SharedArrayBuffer(1024); // Create a view and set the value of the 0 index const ta = new Uint8Array(sab); ta[0] = 7; // 7 (0111) XOR 2 (0010) = 5 (0101) console.log(Atomics.xor(ta, 0, 2)); // 7, the old value console.log(Atomics.load(ta, 0)); // 5, the new/current value
Спецификации
Совместимость с браузерами
| Desktop | Mobile | Server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
xor |
68 |
79 |
78 |
55 |
15.2 |
89 |
79 |
63 |
15.2 |
15.0 |
89 |
15.2 |
1.0.0 |
1.0 |
8.10.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/xor