词条 | 二进制转换 |
释义 | 随着计算机的普及,二进制开始频繁应用于日常生活中。其中包括二进制数据的运算甚至关于机器语言的转换。但人们在生活中更熟悉十进制,如何将二进制进行转换变成十进制数,或者与之息息相关的八进制数和十六进制数就是本词条讨论的话题。 二进制转换一种新处理器的流行,离不开相应软件的支持。开发新的处理器可能会因为失去相应软件的支持而影响其推广应用和市场前景;另一方面,得不到广泛应用和一定市场份额的处理器也很难得到丰富的软件支持。这种处理器和支持软件之间相互钳制的关系,既使得新处理器的设计不得不考虑兼容老处理器,也阻碍了新处理器的推出。在这种情况下,研究如何把支持老处理器的软件移植到新的处理器上,使新的处理器从诞生之初就有丰富的软件,不仅对软件重用有重大意义,更可以开阔处理器研发的思路,促进新处理器的创新。 二进制转换常见方法一般有三种方法可以把老处理器上的代码移植到新处理器上[1]: 1. 在新处理器上提供专门的运行模式来执行老代码,如英特尔的安腾(Itanium)处理器专门设计了执行x86代码的硬件。 2. 把源程序重新编译到新的指令集。 3. 使用软件方法,解释或翻译应用程序。 第一种方法,显然无法利用新处理器的一些先进特性,失去了开发新处理器的意义,并且增加了新处理器的硬件复杂度,甚至还会影响原有代码的执行效率;第二种方法可以达到很好的效率,但并不总是可行,因为有些程序已经没有源代码,有些程序依赖于共享代码库,而这些共享代码以目标代码形式出现,不一定能得到源码,有些源程序语言没有编译到新指令集的编译器,此外操作系统的差异还可能使得只有修改源代码才能重新编译这些例程(比如与图形相关的代码)。 因此第三种方法,称之为二进制翻译(Binary Translation)应运而生。它是一种直接翻译可执行二进制程序的技术,能够把一种处理器上的二进制程序翻译到另外一种处理器上执行。它使得不同处理器之间的二进制程序可以很容易地相互移植,扩大了硬件/软件的适用范围,有助于打破前面提到的处理器和支持软件之间互相掣肘影响创新的局面。 二进制翻译也是一种编译技术,它与传统编译的差别在于其编译处理对象不同。传统编译处理的对象是某一种高级语言,经过编译处理生成某种机器的目标代码;二进制翻译处理的对象是某种机器的二进制代码,该二进制代码是经过传统编译生成的,经过二进制翻译处理后生成另一种机器的二进制代码。按照传统编译程序前端、中端和后端的划分,我们可以理解为二进制翻译是拥有特殊前端的编译器。 四则运算加法:0+0=0,0+1=1,1+0=1,1+1=10 减法:0-0=0,1-0=1,1-1=0,0-1=1 乘法:0×0=0,0×1=0,1×0=0,1×1=1 除法:0÷1=0,1÷1=1, 1÷0无意义,0÷0无意义 转换方法二进制、八进制、十六进制转换为十进制----------按位权展开。 二进制转换十进制二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 例如,设有一个二进制数:0110 0100(由后至前分别为第0位,第1位……第7位),转换为10进制为: 下面是竖式: 01100 100 换算成 十进制 第0位 0 x 2^0 = 0 第1位 0 x 2^1 = 0 第2位 1 x 2^2 = 4 第3位 0 x 2^3 = 0 第4位 0 x 2^4 = 0 第5位 1 x 2^5 = 32 第6位 1 x 2^6 = 64 第7位 0 x 2^7 = 0 -------------------------- (01100 100)B=(100)D 注:数字后面相应的字母表示不同的进位制。B表示二进制,O表示八进制,D表示十进制,H表示十六进制。 八进制转换十进制八进制就是逢8进1。 八进制数采用 0~7这八数来表达一个数。 八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方…… 所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示: 1507换算成十进制。 第0位 7 x 8^0 = 7 第1位 0 x 8^1 = 0 第2位 5 x 8^2 = 320 第3位 1 x 8^3 = 512 -------------------------- (1507)O=(839)D 同样,我们也可以用横式直接计算: 7 X 8^0 + 0 X 8^1 + 5 X 8^2 + 1 x 8^3 = (839)D 结果是,八进制数1507 转换成十进制数为 839 十六进制转换为十进制 (ABC.8C)H=10x16^2+11x16^1+12x16^0+8x16^-1+12x16^-2 =2560+176+12+0.5+0.046875 =(2748.546875)D 十进制转换为二进制、八进制、十六进制1.整数部分除R取余 例:(125)D=(1111101)B 注:余数中最后得到的余数为最高位,最先得到的余数为最低位,从高到低依次排列。 2.小数部分乘R取整 例:(0.25)D 0.25 X 2 _______________ 0.50 (整数部分0为高位) X 2 ↓ _______________ ↓ 1.00 (整数部分1为低位) (0.25)D=(0.01)B 注:整数的转换是精确的,小数的转换可能出现无穷小数或循环小数的情况。此时需要进行舍入处理以截断,所以小数的转换可能略有偏差。箭头表示由高位到低位的趋势。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。