进制转换以及位操作符

进制转化

十进制和二进制转化

十进制转化二进制

150/2=75余0  75/2=37余1  37/2=18余1  18/2=9余0  9/2=4余1  4/2=2余0 2/2=1余0  1/2=0余1

结果:10010110

二进制转化十进制

10010110=0*2^0+1*2^1+1*2^2+0*2^3+1*2^4+0*2^5+0*2^6+1*2^7

二进制与八进制转化

二进制转化八进制

010  010  110 前补零

110=0*2^0+1*2^1+1*2^2=6

010=0*2^0+1*2^1+0*2^2=2

010=0*2^0+1*2^1+0*2^2=2

反过来

结果:226

八进制转化二进制

2/2=1余0 1/2=0余1 10

2/2=1余0 1/2=0余1 10

6/2=3余0 3/2=1余1 1/2=0余1 110

结果:10010110

二进制与十六进制转化

二进制转化成十六进制 10=>a 11->b 12->c

1001  0110

0110=0*2^0+1*2^1+1*2^2+0*2^3=6

1001=1*2^0+0*2^1+0*2^2+1*2^3=9

结果:96

十六进制转化成二进制

6/2=3余0  3/2=1余1  1/2=0 余1  110

9/2=4余1  4/2=2余0  2/2=1余0  1/2=0 余1  1001

结果:1001 0110

八进制与十进制转化

十进制转化八进制

150/8=18余6  18/8=2余2  2/8=0余2

结果:226

八进制转化十进制

6*8^0+2*8^1+2*8^2=150

十六进制转化十进制

十进制转化十六进制

150/16=9 余6=96

结果:96

十六进制转化十进制

6*16^0+9*16^1=150

rgb与十六进制转化

rgb转化十六进制

Rgb(0,206,209)

0/16=0余0  00  前补零

206/6=12余14 ce

209/16=13余1 d1

结果:#00ced1

十六进制转化rgb

00=0*16^0+0*16^1=0

ce=14*16^0+12*16^1=106

d1=1*16^0+13*16^1=209

结果:Rgb(0,206,209)

位操作符

js所有数值都是64位格式存储,计算时会将64位转化成32位的整数,然后执行计算操作,最后再转化回64位,对于有符号整数,第32位为0表示正数,为1表示负数

求一个数的负数,则计算二进制的补码

例如:18的负数-18

0000 0000 0000 0000 0000 0001 0010

先求反码,把0和互换

1111 1111 1111 1111 1111 1110 1101

再进行对反码+1

1111 1111 1111 1111 1111 1110 1101

                                                     +1

1111 1111 1111 1111 1111 1110 1110

结果:-18

1.按位非(not)

求一个书的反码,把0和1互换,例如: var n= ~25

0000 0000 0000 0000 0000 0001 1001

1111 1111 1111 1111 1111 1110 0110

结果:-26

2.按位与(and)

相同位置都为1则变成1,都为0则变成0,不相同则变成0 例如: var n= 25&3

25=0000 0000 0000 0000 0000 0001 1001

3 =0000 0000 0000 0000 0000 0000 0011

      0000 0000 0000 0000 0000 0000 0001

结果:1

3.按位或(or)

相同位置都为1则变成1,都为0则变成0,不相同则变成1 例如: var n= 25|3

25= 0000 0000 0000 0000 0000 0001 1001

3 = 0000 0000 0000 0000 0000 0000 0011

0000 0000 0000 0000 0000 0001 1011

结果:27

  1. 按位异或(xor)

相同位置都为1则变成0,都为0则变成0,不相同则变成1 例如: var n= 25^3

25= 0000 0000 0000 0000 0000 0001 1001

3 = 0000 0000 0000 0000 0000 0000 0011

0000 0000 0000 0000 0000 0001 1010

结果:26

5.左移

把二进制整体向左进行移动,空出的位置以0补齐,例如: var n= 2<<5

2= 0000 0000 0000 0000 0000 0000 0010

移=0000 0000 0000 0000 0000 010[0 0000]

结果:64

6.右移

把二进制整体向右进行移动,空出的位置以0补齐,例如: var n=64>>5

64=0000 0000 0000 0000 0000 0100 0000

移= 0000 0000 0000 0000 0000 0000 0010

7.无符号右移

把二进制整体向右进行移动,空出的位置以0补齐,例如: var n=-64>>>5

64

0换1

之后+1

-64=1111 1111 1111 1111 1111 1100 0000

0000 0111 1111 1111 1111 1111 1110

结果:134217726

类型转化

隐式转化

6/4=1.5把整数转化为小数

6+null=6 把null转化为0

6+””=6数字转化为字符串

6-0=6 字符串转化为数字

显示转化

parseInt()

parseFloat()

进制变量

Var c=017//八进制

Var e=0x1A//十六进制

parseInt(071,14)//求十四进制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兔子^-^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值