位运算
1.按位与 & | ^
我们所进行的数值计算,再计算中都是二进制去计算
计算 10&20
console.log(12&21)
console.log(12|21)
console.log(12^21)
二进制:原码、反码、补码
12:正数的原码/反码/补码都是一样的
原码: 0000 1100
12: 0 1100
21: 1 0101,
& 0 0100 ==>4 按位与:对应两个位为1时,结果为1
| 1 1101 ==>29 按位或:对应两个位一个为1 结果便为1
^ 1 1001 ==>25 按位异或:对应两个位 相同为0 不同为1
20: 0000 1010
按位右移是在二进制末尾删除n位,在开头补0
console.log(20<<1) // 40
20: 0010 1000 ==>40
按位左移是在二进制开头删除n为,在末尾补0
console.log(-10>>2) // -3 ex:-10右移两位,-10/2^2=-2.5 取小 为-3
原码: 1 0000 1010,
反码: 1 1111 0101,
补码: 1 1111 0110,
移位: 1 1111 1101,
取反(反码): 1 0000 0010
原码(补码): 1 0000 0011 ,// -3
负数在按位右移的过程中,高位补1
按位左移
console.log(-10<<2) // -40 ex:-10左移两位 -10*2^2=-40
原码:1 0000 1010
反码:1 1111 0101
补码:1 1111 0110
左移:1 1101 1000
取反:1 0010 0111
原码(补码):1 0010 1000 // -40
短路与 (一假即假)
- 针对 && 顺口溜: 找第一个出现的假值. (一假即假)
- 针对 || 顺口溜: 找第一个出现的真值. (一真即真)
** 口诀 : 找第一个为假的值.
// 请问1 : 8 < 7 && 3 < 4, 结果为 ?
alert(8 < 7 && 3 < 4); // false
// 请问2 : -2 && 6 + 6 && null 结果为 ?
alert(-2 && 6 + 6 && null); // null
// 请问3 : 1 + 1 && 0 && 5 结果为 ?
alert(1 + 1 && 0 && 5); // 0
// console.log(true && false);
// console.log(false && true);
//1.按位与
//计算机中都是二进制计算
//10&20
console.log(12 & 21);//==>4
console.log(12 | 21);//==>29
//计算方式 原码 反码 补码
// 整数的原码/补码/反码都是一样的
//12: 原码:0000 1100
//21&