进制及进制的转换

了解进制的概念及进制的转换是学习逆向的基础,因为计算机使用的进制是二进制,它又不同于我们现实生活中使用的十进制,因此我们必须学习不同的进制及进制之间的转换。

现实生活中的进制与计算机的二进制

我们在现实生活中会接触到多种多样的进制,通常见到的有十进制、十二进制和二十四进制等。下面分别对这几种进制进行举例说明。
十进制是每个人从上学就开始接触和学习的进制表示方法。所谓的十进制,就是逢十进一,最简单的例子就是9+1=10。这个无需过多解释。
十二进制也是我们日常生活中常见的表示方法。所谓的十二进制,就是逢十二进一,例如12个月为1年,13个月就是1年1个月。
二十四进制也是我们日常生活中常见的表示方法。所谓的二十四进制,就是逢二十四进一,例如24小时为1天,25小时就是1天1小时。
介绍了以上现实生活中的例子后,我们再来说说计算机中的二进制。根据前面各种进制的解释,我们可以想到,二进制就是逢二进一。这里举个不太恰当的例子,例如2斤就是1公斤。

在计算机中为什么使用二进制呢?简单说就是计算机用高电平和低电平来表示1和0最为方便和稳定,高电平被认为是l,低电平被认为是0,这就是所谓的二进制的来源。由于二进制在阅读上不方便,计算机又引入了十六进制来直观地表示二进制。所谓的十六进制,就是逢十六进一。
因此在计算机中,我们常见的数据表示方法有二进制、十进制和十六进制。

进制的定义

在学习小学数学的时候我们就学习了十进制,十进制一共有十个数字,从0一直到9,9再往后数一个的时候要产生进位,也就是逢十进一。总结十进制的定义则是,由0到9十个数字组成,并且逢十进一。
举一反一地来说,二进制的定义是,由0到1两个数字组成,逢二进一。十六进制的定义是由0到9十个数字和A到F六个字母组成,逢十六进一。
由此,我们衍生出N进制的定义是,由N个符号组成,逢N进一。
下表所列为这三种进制的数字表。

数制 基数 数字
二进制 2 0 1
十进制 10 1 2 3 4 5 6 7 8 9
十六进制 16 0 1 2 3 4 5 6 7 8 9 A B C D E F

进制的转换

在逆向当中,我们直接面对的通常是十六进制,而由于很多原因,我们需要将其当作十进制或二进制来查看,当然也有可能需要根据二进制转换成十六进制或十进制。所以,我们就需要掌握进制之间的转换。

二进制转十进制

二进制整数的每个位都是2的幂次方,最低位是2的0次方,最高为是2的(N-1)次方,我们通过一个例子进行说明。我们把二进制数10010011转换成十进制数,计算方式如下:
10010011=1×27+0×26+0×25+1×24+0×23+0×22+1×21+1×20=128+0+0+16+0+0+2+1=147

十六进制与二进制的转换

由于一个简单的数值用二进制表示需要很长的位数,这样对于阅读很不方便,因此汇编和调试器常用十六进制表示二进制。十六进制的每个位可以代表4个二进制位,因为2的4次方刚好是16。这样,在二进制与十六进制之间就产生了一个很好的对应关系,如下表。

二进制 十进制 十六进制 二进制 十进制 十六进制
0000 0 0 1000 8 8
0001 1 1 1001 9 9
0010 2 2 1010 10 A
0011 3 3 1011 11 B
0100 4 4 1100 12 C
0101 5 5 1101 13 D
0110 6 6 1110 14 E
0111 7 7 1111 15 F

根据此表,我们可以很快地把二进制和十六进制进行转换,把上例的二进制10010011转换成十六进制,转换过程如下:
第一步,把10010011从最低开始按每四位分为一组,不足四位前面补0,划分结果为1001 0011

第二步,把划分好的组进行查表,1001对应十六进制是9,0011对应的十六进制是3。那么,二进制10010011转换成十六进制后的值是93。

在逆向中常用的就是二进制与十进制的转换,或者是二进制与十六进制的转换,其他的转换方式可以自行查找资料进行学习。关于十六进制和二进制需要记住的重要一点就是。
一位十六进制数可以表示四位二进制数。

上一篇 鲁大师绿化方案
下一篇 数据宽度和字节序
applek

applek管理员

个人说明在个人中心里面设置

本月创作热力图

最新评论
西风
西风
3月7日
暂时不需要也能跑
Kevin
Kevin
3月6日
请教,小网站,1000ip不到,小主机,2c4g,到底 redis 还是 macached 合适啊
hfloke
hfloke
3月1日
新版本安装更新后,页面有问题哦
丙氨酸
丙氨酸
2月27日
测试
评论于关于本站
RiseForever
RiseForever
2月23日
听说新主题发布了,来测试下评论区。