要努力啊小汤!
当你的才华还不足以撑起你的野心时,你应该静下心学习!!!

二进制运算符:【太难了太难了~

2020-11-04 11:55:02


二进制运算

二进制运算是对比特位进行运算,底层运算的优点是速度快,缺点是不直观,使用范围窄;
位运算符只对整数起作用,如果不是整数就会自动转为整数后执行

  1. 按位取反:~
  2. 或:|
  3. 与:&
  4. 异或:^
  5. 左移:<<
  6. 右移:>>
  7. 头部补零右移运算符:>>>

javascript:

数值是64位浮点数形式存在;

位运算是32位带符号的整数进行运算;

 


或运算符:|

逐位比较两个数,先将数值转为二进制数,只要有一个为1就是1,否则为0

0 | 3 // 3

00 | 11

 

与运算符:&

逐位比较两位数,先将数值转为二进制数,只要有一个为0就是0,否则为1

 

否运算符:~

  1. 每个二进制按位取反:先将数字转为32位的二进制,然后将二进制按位取反;
  2. 第一位为符号位:0正1负
  3. 减1再一次取反得到的值  或者是(自身的取反值+自身)
  4. 小数:保留整数部分进行否运算
  5. 字符串:先调用Number函数,将字符串转为数值

异或运算符:^

两个数不同的时候返回1【true】,相同的时候返回0【false】

0 ^ 3 // 3
00^11====11===3

左移运算符<<   + 右移运算符>>

左移相当于取整;右移相当于除2的次方取整

5 >> 1
// 2
// 相当于 5 / 2 = 2

21 >> 2
// 5
// 相当于 21 / 4 = 5

21 >> 3
// 2
// 相当于 21 / 8 = 2

21 >> 4
// 1
// 相当于 21 / 16 = 1

 

头部补零的右移运算符>>>

右移的时候,不论是否是符号位都补零,得到的值是正数

4 >>> 1
// 2

-4 >>> 1
// 2147483646
/*
// 因为-4的二进制形式为11111111111111111111111111111100,
// 带符号位的右移一位,得到01111111111111111111111111111110,
// 即为十进制的2147483646。
*/

 

 

 

 

 

 


 

posted on 2020-11-04 17:38  做一个有趣的妞儿  阅读(343)  评论(0)    收藏  举报