进制转化
十进制和二进制转化
十进制转化二进制
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
- 按位异或(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)//求十四进制