码迷,mamicode.com
首页 > Web开发 > 详细

js位操作

时间:2017-12-01 11:35:05      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:rip   span   有符号   正数   color   减法   有一个   相加   script   

1.&(与)

都是1才是1

例如:14&15  (14  二进制  1110

                        15  二进制   1111

                         &与的结果  1110  ----》结果14)

(14&15).toString(2); //"1110"

 

2.|(或)

有一个是1就是1

例如:14|15  (14  二进制  1110

                  15 二进制      1111

                   |与的结果       1111 ----》结果15)

(14|15).toString(2); //"1111"

3.^(异或)

不同就是1

例如:14^15  (14  二进制  1110

                        15    二进制   1111

                        ^与的结果      0001 ----》结果1)

(14^15).toString(2); //"1"

4.~(非)

说到这里就要科普一下了,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)

~14; //-15

5.<<(有符号左移)

有符号左移会将32位二进制数的所有位向左移动指定位数

num<<n相当于num乘以2的次方

var num = 5; // 二进制111
num << 3; // 二进制111000,十进制40

6.>>(有符号右移)

num>>n相当于num除以2的次方

(64).toString(2)  //"1000000"
(64>>3).toString(2)  //"1000",十进制8

有符号左移与右移不会影响符号位。

7.>>>(无符号右移)

var num = -64;       //11111111111111111111111111000000
(num >>> 5).toString(2); //"111111111111111111111111110",十进制134217726

js位操作

标签:rip   span   有符号   正数   color   减法   有一个   相加   script   

原文地址:http://www.cnblogs.com/amiezhang/p/7940530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!