Loki博客

大龄程序员逆向之路

进制讲解与互转

进制的介绍:

(1)进位制:表示数时,仅用一位数码往往不够用,必须用进位计数的方法组成多位数码。多位数码每一位的构成以及从低位到高位的进位规则称为进位计数制,简称进位制。
(2)基数:进位制的基数,就是在该进位制中可能用到的数码个数。
(3)位权(位的权数):在某一进位制的数中,每一位的大小都对应着该位上的数码乘上一个固定的数,这个固定的数就是这一位的权数。权数是一个幂。

十进制

数码为:0~9
基数为:10
运算规律:逢十进一, 即: 9 + 1 = 10
十进制数的权展开式:7777 = 7 * 103 + 7 * 102 + 7 * 101+ 7 * 100
带有小数点例子:888.48 = 8 * 102 + 8 * 101 + 8 * 100 + 4 * 10-1 + 8 * 10-2
说明:

  • 同样的数码在不同的数位上代表的数值不同。
  • 103、102、101、100称为十进制的权,各个数位的权是10的幂。
  • 任意一个十进制数都可以表示为各个数位上的数码与其对应的权的乘积之和,称权展开式。

二进制

数码为:0、1
基数为:2
运算规律:逢二进一, 即: 1 + 1 = 10
二进制数的权展开式:(110.01)2 = 1 * 22 + 1 * 21 + 0 * 20 + 0 * 2-1 + 1 * 2-2 = (6.25)10

说明:

  • 各个数位的权是2的幂。
  • 二进制数只有0和1两个数码,它的每一位都可以用电子元件来实现,且运算规则简单,相应的运算电路也容易实现。

八进制

数码为:0~7
基数为:8
运算规律:逢八进一, 即: 7 + 1 = 10
八进制数的权展开式:(107.04)8 = 1 * 82 + 0 * 81 + 7 * 80 + 0 * 8-1 + 4 * 8-2 = (71.0625)10

说明:

  • 各个数位的权是8的幂。

十六进制

数码为:09、AF
基数为:16
运算规律:逢十六进一, 即: F + 1 = 10
十六进制数的权展开式:(D8.A)8 = 13 * 161 + 8 * 160 + 10 * 16-1 = (216.625)10

说明:

  • 各个数位的权是16的幂。

进制之间的对照关系

关系

数制转换

二进制数与八进制数的相互转换

  • 二进制数转换为八进制数:将二进制数由小数点开始,整数部分向左,小数部分向右,每3位分成一组,不够3位补零,则每组二进制数便是一位八进制数。
    001|101|010|.010=(152.2)8
  • 八进制数转换为二进制数:将每位八进制数用3位二进制数表示。
    (374.26)8=011|111|100|.010|110

二进制数与十六进制数的相互转换

  • 二进制数与十六进制数的相互转换,按照每4位二进制数对应于一位十六进制数进行转换。
    0001|1101|0100|.0110=(1E8.6)16

(AF4.76)16=1010|1111|0100|.0111|0110

十进制数转换二进制数

  • 采用的方法 —基数连除、连乘法,原理:将整数部分和小数部分分别进行转换整数部分采用基数连除法,小数部分采用基数连乘法,转换后再合并。
整数部分采用基数连除法先得到的余数为低位,后得到的余数为高位。

整数

小数部分采用基数连乘法先得到的整数为高位,后得到的整数为低位。

小数
例子:(88.375)16 = (1011000.011)2

Buy me a coffee