Appearance
说明
数据结构与算法是一名程序员必备的技能。熟练使用的话,可以大幅度降低在处理数据时的各种问题难度。
进制及进制转换
计算机中可以以多种进制对数据进行存储。存到硬件中常用二进制,但是平时使用时更多用到十进制和十六进制,八进制也会有所应用。请记住各种进制的英文缩写表示
二进制 | 八进制 | 十进制 | 十六进制 |
---|---|---|---|
BIN | OCT | DEC | HEX |
在有些时候,用户也需要进制进行转换。
- 各种进制转十进制
其他进制转十进制的规则比较简单,按如下规则进行运算即可。
进制位*进制^所在位,将每一位相加
例如:
二进制1000转为十进制,即为:
1*2^3+0*2^2+0*2^1+0*2^0 = 8
八进制7271转为十进制为:
7*8^3 + 2*8^2 + 7*8^1 + 1*8^0 = 3769
十六进制AF12转为十进制为:
10*10^3 + 15*10^2 + 1*10^1 + 2*10^0 = 44818
其中,十六进制的A/B/C/D/E/F,分别对应十进制的10,11,12,13,14,15
- 十进制转其他进制
以十进制数除进制取余,将余数倒着拼接
例如:
5352转到
十六进制是 14E8
八进制是 12350
二进制是 0001 0100 1110 1000
- 二进制转其他进制
转十六进制时,将二进制每四位看做一组,将其表示值与十六进制的数位一一对应
转八进制时规则与十六进制相似,只是需要将二进制每三位看做一组
二进制转其他位时有快捷办法。以 1001 1100为例,从最右端向左的代表值依次是2^0,2^1,2^2, 2^3...以此类推。这样算得的结果即是十进制的值(156)。
按照转八进制的规则,每三位一组,则1001 1100可看做010 011 100,每一组从右向左依次是2^0,2^1,2^2。所以这里,010代表2, 011代表3, 100代表4, 则对应的八进制为234
类似于八进制,十六进制则是四个数一组,所以 1001 1100中,1001代表9, 1100代表C, 所以对应的十六进制为9C
由于转换时,常常是四个一组地去看数,且从左往右代表的数值分别是2^3=8,2^2=4,2^1=2,2^0=1,所以这种快捷转码方法也被称作"8421码"。