说一说JS中位运算符

前言

JS中有位运算符:与( & )、或( | )、按位取反(~)、异或( ^ )、左移位( << )、右移位( >> )。下面就具体来说说这些位运算符。

十进制转二进制

首先,需要明白一点,JS进行位运算符时,都是将操作数转换为二进制在进行的,毕竟是按位运算。一般情况下,都是十进制转二进制,遇到其他进制,也可以先转化为十进制,然后在转为二进制。
… 128 64 32 16 8 4 2 1
我一般转换二进制的时候,先是将2的幂次方值依次从右往左列出,然后看看如何能让最少的几位数相加之和与所转换值相等,比如13,那么应该是8+4+1,然后就在对应的数字下面写1,结果如下表

1286432168421
1101

然后又在空白处填上0,第一位非0数字位前的就不用填充了,那么最后得到13的二进制数为:1101。

与( & )

规则: 两位同为“1”,结果为“1”,否则为0。
13 & 6 ==> 4

操作数/结果8421
131101
60110
结果0100

或( | )

规则: 两位中任意一位为“1”,结果为“1”,否则为0。
13 | 6 == > 15

操作数/结果8421
131101
60110
结果1111

按位取反( ~ )

规则: 操作数求负再减一。
~13 == > -14
实际的计算步骤:

  1. 将13(原码)转二进制:00001101
  2. 按位取反:11110010
  3. 发现符号位(即最高位)为1,表示负数,除符号位的其他位取反:1001101
  4. 末位加1取其补码:1001110
  5. 补码转换为10进制:-14

异或 ( ^ )

规则: 两位不同,结果为“1”,否则为0。
13 ^ 6 == > 11

操作数/结果8421
131101
60110
结果1011

左移位 ( << )

规则:将数值向左移动若干位,用0补足。
13 << 2 == > 52

过程32168421
原始数1101
左移1位1101
左移2位1101

右移位(>>)

规则: 将数值依次右移动若干位,如果超出界限,则去掉。
13 >> 2 == > 3

过程8421溢出省略位溢出省略位
原始数1101
右移1位1101
右移2位1101
补充——原码、反码、补码

原码:一个数的二进制,其中最高位表示符号位:1为负数,0为正数。
反码:在原码的基础上,除符号位外,依次取反。
补码:在反码的基础上,按正常加法操作,加1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值