Created
November 19, 2015 04:29
-
-
Save AJLoveChina/a7506d18d8722bed3b40 to your computer and use it in GitHub Desktop.
关于异或
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
有时候我们可以用这样的方式交换变量 | |
var a = 3, b = 4; | |
a = a ^ b; | |
b = a ^ b; | |
a = a ^ b; | |
console.log(a + '--' + b); // 4--3 交换成功 | |
但是, 这种方法有俩点需要注意 : | |
1. a 和 b要为整数(也就是int类型, 虽然js没有int类型, 所有数字都是以64位浮点数形式储存, 但只要你写的数字是整数就OK) | |
2. a, b 不可以相同 (并不是说值不能相同, 而是说不能 a与a进行这种运算, 经常会在交换数组的俩个数值时发生这种错误) ,例如 : | |
<script> | |
var m = 1, n = 2; | |
var arr = [1,2,3,4,5]; | |
// 如果要交换数组下标为m, n的俩个元素, 一定要先判断m是否等于n, m不等于n才可以进行操作, 否则arr[m]最后会变为0 | |
if (m !== n) { | |
arr[m] = arr[m] ^ arr[n]; | |
arr[n] = arr[m] ^ arr[n]; | |
arr[m] = arr[m] ^ arr[n]; | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment