js不常用位运算

2020-11-18  本文已影响0人  Raral
// 十进制 => 二进制
//整数部分 除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
上一篇 下一篇

猜你喜欢

热点阅读