分享

数制转换

 _bolo 2019-11-14

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);

}

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约