JS中的位操作——每日总结

一、JS中的位操作符有7种:

1. 按位取反 ~

2. 按位与    &

3.按位或      |

4.按位异或  ^

5.左移    <<

6.有符号右移 >>

7.无符号右移 >>>

运算中,所有的二进制都是补码。

1. 按位取反 ~

代码段:

var num1=25;   //二进制补码00000000000000000000000000011001
var num2=~num1;//二进制补码11111111111111111111111111100110
alert(num2);//-26

2. 按位与  &

代码段:

var a=6&2;//0110&0010=0010
alert(a);//2

3.按位或  |

代码段:

var a=6 | 8;
alert(a);//14

4.按位异或  ^

代码段:

var a=6^15;
alert(a);//9

5.左移    <<

全部都是保留符号位的

2<<5==64 -2<<5==-64


6.有符号右移 >>

保留符号位,并且符号位的值填充所有产生的空位

var a=-6>>1;
alert(a);//-3
求解过程:

-6的原码:1 1 1 0
-6的反码:1 0 0 1

-6的补码:1 0 1 0

-6>>1    : 1 1 0 1(结果的补码,减一取反即可得到结果的原码)

-1          : 1 1 0 0

~           : 1 0 1 1(这是原码,a=-3)


var a=-6>>2;
alert(a);//-2
求解过程:

-6的补码:1 0 1 0

-6>>2    : 1 1 1 0(结果的补码,减一取反即可得到结果的原码)

-1          : 1 1 0 1

~           : 1 0 1 0(这是a的原码,a=-2)


7.无符号右移 >>>

包括符号位的共32位都往右移,0填充所有右移产生的空位。一般负数>>>的结果往往是非常大的正数,因为符号位变成了0。正数无影响。
比如,-64>>5是一个很大的数134217726


二、总结

1.所有的二进制操作数都是补码,

2.有符号右移的过程是: 十进制数(操作数)->二进制原码 ->二进制补码 ->右移得到的二进制补码->二进制原码 -> 十进制数(右移结果)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值