JS按位操作符的一些理解

在看js某些项目的源码的时候发现了位操作符,发现看得有些懵逼,这个我基本没使用过(还是接触得太少了)。

‘|’符号

开始我还以为这个符号和‘||’是一样得,隐隐呼呼记得以前某代码里面写过当时感到奇怪但是并没有去了解(留下了一个我不一定找得到得坑);

这个符号和‘||’意思是一样得,但是计算是按二进制计算的,0和1就是1,0和0就是0,1是二进制的1,转成布尔就是true

代码解释一下详细的规则:

let x = 2 | 3
/*
 *	将2和3转成二进制分别是:10和11,然后按照比特(其他名称:位元,位;解释:单一的二进制数字)进行比较
 *  这里将10和11按位比较,如果存在1就是1那么结果就是11(0 vs 1; 1 vs 1)
 *  1 0
 *  1 1
 */
console.log(x..toString(2)) // 11
// 换一个
let y = 5 | 24
console.log(5..toString(2)) // 二进制:101
console.log(24..toString(2)) // 二进制:11000
/*
 * 00101
 * 11000
 * 结果: 11101
 */
console.log(y.toString(2)) // 11101

 

'&'符号

转换规则和上面一样,这个和‘&&’意思也一样的相同1为1,0和1得0,1和0还是0

let x = 2 & 3
/*
 *  1 0
 *  1 1
 *  1 0
 */
console.log(x.toString(2)) // 10
// 换一个
let y = 5 & 24
console.log(5..toString(2)) // 二进制:101
console.log(24..toString(2)) // 二进制:11000
/*
 * 00101
 * 11000
 * 结果: 00000
 */
console.log(y.toString(2)) // 00000

'^'符号

参考按位异或

当其中x, y不相同时返回1

'>>'

从右向左移除一比特

'>>>'

从右向左移除一比特,无符号,会转成补码,示例:

let x = -4 >> 1 // -4二进制 -100
let y = -4 >>> 1
console.log(x.toString(2)) // -10 从右向左移除一比特后
console.log(y.toString(2)) // 1111111111111111111111111111110 最大值 从右向左移除一比特后

'<<'

追加0在末尾

夜深了,睡觉。。。话说还是不晓得这些得用途,不过晓得应该快了

分享 二维码
分类:代码笔记
标签:
还没有评论


在此输入评论..
0/100