// 十进制 => 二进制
//整数部分 除2取余法 从下往上; 小数部分 乘2取整 从上往下
// xx
// js位操作
// 1. &(与)
// 都是1才是1
/**
* 例如: 14&15
* 14 二进制 => 1110
* 15 二进制 => 1111
*
* & 结果 => 1110 => 1*2^3 + 1*2^2 + 1*2^1 + 0*2^0 = 14
*
*/
console.log(14&15)//14
//2. |(或)
//有一个1就是1
/**
* 列如: 14|15
* 14 二进制 => 1110
* 15 二进制 => 1111
*
* | 结果 => 1111 => 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 15
*/
console.log(14|15)//15
//3. ^(异或)
//不同就是1
/**
* 列如: 14|15
* 14 二进制 => 1110
* 15 二进制 => 1111
*
* ^ 结果 => 0001 => 0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 1
*/
console.log(14^15)//15
//4. ~(非)
//不同就是1
/**
说到这里就要科普一下了,JavaScript仅支持32位整型数
0变1,1变0
例如:~14(14 二进制 0000 0000 0000 0000 0000 0000 0000 1110
~的结果 1111 1111 1111 1111 1111 1111 1111 0001
最高位符号位为1,说明是个负数,大计基还记得嘛~~负数怎么来的
(正数二进制,取反,+1(为什么这样呢?因为计算机不擅长减法,所以把负数处理成补数,使得相减就等于他们的补数相加;而一个数的正负数取反相加是11111111...再+1才等于0,所以要+1))
逆过程,-1,取反
1111 1111 1111 1111 1111 1111 1111 0001 --> 0000 0000 0000 0000 0000 0000 0000 1111
----》15 ----》当然因为是个负数,最终结果是-15)
*/
console.log(~14)//-15
网友评论