手动实现二进制、八进制、十六进制转换

需积分: 13 6 下载量 49 浏览量 更新于2024-09-12 收藏 37KB DOC 举报
该资源是一个Java程序,实现了基础的进制转换算法,包括2、8、16进制与10进制之间的转换。作者强调了编写此程序的目的是为了理解进制转换的数学原理,而不是简单地调用已有的JDK函数。程序通过用户输入数据,对输入进行判断和匹配,确保输入的有效性和正确性。 进制转换是计算机科学中的基本概念,用于在不同基数的数制系统之间转换数值。常见的进制有二进制(Binary)、八进制(Octal)、十进制(Decimal)和十六进制(Hexadecimal)。以下是这些进制转换的基本算法原理: 1. **二进制到十进制**: - 二进制数是由0和1组成,其转换至十进制采用权重累加法。每个位上的数字乘以其位置的权重(2的幂次),然后将所有结果相加。例如,二进制数1011转换为十进制就是1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 8 + 0 + 2 + 1 = 11。 2. **十进制到二进制**: - 十进制数转换为二进制通常使用“除2取余”法。将十进制数不断除以2,取余数,直到商为0。余数从下往上排列,即为二进制表示。例如,十进制数13转换为二进制:13 / 2 = 6...1,6 / 2 = 3...0,3 / 2 = 1...1,1 / 2 = 0...1,所以13的二进制形式是1101。 3. **八进制到十进制**: - 八进制数的每一位对应的是2的3次幂的权重,从右向左分别是2^0, 2^3, 2^6, ...。转换方法类似二进制,只是将2替换为8。例如,八进制数25转换为十进制就是2*8^1 + 5*8^0 = 16 + 5 = 21。 4. **十进制到八进制**: - 类似于二进制转换,十进制数转换为八进制,也是不断除以8取余数,直到商为0,然后排列余数得到八进制数。例如,十进制数37转换为八进制:37 / 8 = 4...5,4 / 8 = 0...4,所以37的八进制形式是45。 5. **十六进制到十进制**: - 十六进制使用0-9和A-F这16个符号,每个位的权重是2的4次幂。转换时,数字0-9的权重与它们在十进制中的值相同,A-F分别代表10-15。例如,十六进制数2F转换为十进制就是2*16^1 + F*16^0 = 32 + 15 = 47。 6. **十进制到十六进制**: - 同样使用除法,但每次除以16,取余数。当余数是10-15时,使用A-F来表示。例如,十进制数72转换为十六进制:72 / 16 = 4...8,所以72的十六进制形式是48。 在上述Java程序中,`biDecimalSystem()`方法实现了从二进制到十进制的转换,它首先判断输入是否为有效的二进制数,然后计算每个位的权重并累加。其他进制的转换可以通过类似的方法实现,如将十进制转换为其他进制,首先将其转换为二进制,然后再转换为目标进制。对于八进制和十六进制,由于它们是2的幂次进制,可以直接进行转换,而无需先转为二进制。 进制转换算法的理解对于计算机科学的学习至关重要,因为它涉及到计算机如何存储和处理数据的基础知识。这个Java程序提供了一个实践这些算法的例子,有助于加深对进制转换原理的理解。