package com.sjtu.design.excise; import java.util.Scanner; /** * @class 数制转换类 * @author TangShuGuang */ public class NumConversion { /** * @category 除基倒取余法 * @describe 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2... * 依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数。那么,在实际实现中, * 可以用int的一个数来存储最后的二进制,每次求余后把余数存储在int型数的低位,依次递增。 * @param num */ public void binary(int num) { int t = 0; // 用来记录位数 int bin = 0; // 用来记录最后的二进制数 int r = 0; // 用来存储余数 while (num != 0) { r = num % 2; num = num / 2; bin += r * Math.pow(10, t); t++; } System.out.println("二进制值:" + bin); // int oct=Integer.parseInt(str,2); // System.out.println("二进制值:" + Integer.toBinaryString(oct));//binary函数 } /** * @category 除基倒取余法 * @describe 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以8,把余数记下来,再用商去除以8... * 依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的八进制数。那么,在实际实现中, * 可以用int的一个数来存储最后的八进制,每次求余后把余数存储在int型数的低位,依次递增。 * @param num */ public void octal(int num) { int t = 0; // 用来记录位数 int bin = 0; // 用来记录最后的二进制数 int r = 0; // 用来存储余数 while (num != 0) { r = num % 8; num = num / 8; bin += r * Math.pow(10, t); t++; } System.out.println("八进制值:" + bin); // int oct = Integer.parseInt(str, 2); // System.out.println("八进制值:" + Integer.toOctalString(oct));//octal函数 } /** * 问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。 * 它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。 * 十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11, * 以此类推,十进制的30在十六进制中是1E。给出一个非负整数,将它表示成十六进制的形式。 * * @param num */ public void hexadecimal(int num) { String s = ""; char c = ' '; if (num == 0) { s = "0"; } int m; while (num != 0) { m = num % 16; if (m / 10 == 1) c = (char) (65 + (m % 10)); else if (m / 10 == 0) c = (char) (48 + m); s = c + s; num = num / 16; } System.out.println("十六进制值:" + s); // int oct = Integer.parseInt(str, 2); // System.out.println("十六进制值:" + Integer.toHexString(oct));//hex函数 } public void ds(int a) { if(a<0) { System.out.println("|"+a+"|的绝对值是:"+(-a)); }else { System.out.println("|"+a+"|的绝对值是:"+(-a)); } } public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入十进制值:"); String str = input.next(); int num = Integer.parseInt(str); NumConversion conv = new NumConversion(); conv.binary(num); conv.octal(num); conv.hexadecimal(num); //conv.ds(num); } } |
|
来自: _bolo > 《DataStructure》