各进制数的转换

总结备忘。

十进制转二进制

方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

1
2
3
4
5
6
7
8
217/2 = 108 ---- 1
108/2 = 54 ---- 0
54/2 = 27 ---- 0
27/2 = 13 ---- 1
13/2 = 6 ---- 1
6/2 = 3 ---- 0
3/2 = 1 ---- 1
1/2 = 0 ---- 1

所以十进制217转二进制数为 11011001。

js转换:

1
2
> parseInt("217").toString(2);
> "11011001"

二进制转十进制

方法为:把二进制数按权展开、相加即得十进制数。

$$ 11011001=1\times2^0+1\times2^3+1\times2^4+1\times2^6+1\times2^7=1+8+16+64+128=217 $$

js转换:

1
2
> parseInt("11011001",2);
> 217

二进制转八进制

方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。

$$ 11011001=(011)(011)(001)=(1\times2^0+1\times2^1)(t\times2^0+1\times2^1)(t\times2^0)=331 $$

js转换:

1
2
> parseInt("11011001",2).toString(8);
> "331"

八进制转二进制

方法为:八进制数每个位上的数分别转换为三位二进制,顺序从右往左。

$$ 331=(3)(3)(1)=(011)(011)(001)=11011001 $$

js转换:

1
2
> parseInt('331',8).toString(2);
> "11011001"

二进制转十六进制

方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。

$$ 11011001=(1101)(1001)=(1\times2^0+1\times2^2+1\times2^3)(1\times2^0+1\times2^3)=(13)(9)=d9 $$

js转换:

1
2
> parseInt('11011001',2).toString(16);
> "d9"

十六进制转二进制

方法为:十六进制数每个位上的数分别转换为四位二进制,顺序从右往左。

$$ d9=(d)(9)=(13)(9)=(1101)(1001)=11011001 $$

js转换:

1
2
> parseInt('d9',16).toString(2);
> "11011001"

十进制转八进制

方法和十进制转二进制类似:

1
2
3
150/8 = 18 ---- 6
18/8 = 2 ---- 2
2/8 = 0 ---- 2

js转换:

1
2
> parseInt(150).toString(8);
> "226"

八进制转十进制

方法:把八进制数按权展开、相加即得十进制数。

$$ 226=2\times8^2+2\times8^1+6\times8^0=128=16=6=150 $$

js转换:

1
2
> parseInt('226',8);
> 150

十进制转十六进制

方法和十进制转二进制类似:

1
2
150/16 = 9 ---- 6
9/16 = 0 ---- 9

js转换:

1
2
> parseInt(150).toString(16);
> "96"

十六进制转十进制

方法:把八进制数按权展开、相加即得十进制数。

$$ 96=9\times16^1+6\times16^0=144+16=150 $$

js转换:

1
2
> parseInt('96',16);
> 150

请作者喝瓶肥宅水🥤

0