java进制转化算法(十进制转二进制java算法)

本篇文章给大家谈谈java进制转化算法,以及十进制转二进制java算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、java十进制转二进制代码怎么解决?2、java里面二进制 八进制 十进制 十六进制怎么互相转换,有什么规律?3、Java里的十二进制,六进制,二进制,分别怎么转换?4、java实现:整数进制相互转换5、用java 写一个10进制转16进制的算法 怎么写

java十进制转二进制代码怎么解决?

下面是根据十进制数转二进制数的算法所写的一段Java程序示例代码:

import java.math.BigDecimal;

public class Test {

public static void main(String[] args) {

Test t = new Test();

double d = 8;

String s = t.decimal2BinaryStr(d);

System.out.println(“十进制数”+d+”转成二进制数为:”+s);

}

/**

* 十进制数转二进制数

* @param d 十进制数

* @return 十进制数转换成二进制的字符串

*/

public String decimal2BinaryStr(double d){

String result = decimal2BinaryStr_Inte(d);

result += decimal2BinaryStr_Deci(d);

return result;

}

/**

* 十进制整数部分转二进制数

* @param d 十进制数

* @return 十进制整数部分转换成二进制的字符串

*/

public String decimal2BinaryStr_Inte(double d){

//      return Integer.toBinaryString((int)d);

/*

* 本来利用上面的Integer.toBinaryString(int)就可以得到整数部分的二进制结果,

* 但为了展示十进制转二进制的算法,现选择以下程序来进行转换

*/

String result = “”;

long inte = (long)d;

int index = 0;

while(true){

result += inte%2;

inte = inte/2;

index++;

if(index%4 == 0){

result+=” “;

}

if(inte==0){

while(index%4!=0){

result+=”0″;

index++;

}

break;

}

}

char[] c = result.toCharArray();

char[] cc = new char[c.length];

for(int i=c.length; i0; i–){

cc[cc.length-i] = c[i-1];

}

return new String(cc);

}

/**

* 十进制小数部分转二进制

* @param d 十进制数

* @return 十进制小数部分转换成二进制小数的字符串

*/

public String decimal2BinaryStr_Deci(double d){

return decimal2BinaryStr_Deci(d, 0);

}

/**

* 十进制小数部分转二进制

* @param d 十进制数

* @param scale 小数部分精确的位数

* @return 十进制小数部分转换成二进制小数的字符串

*/

public String decimal2BinaryStr_Deci(double d, int scale){

double deci = sub(d,(long)d);

if(deci==0){

return “”;

}

//为了防止程序因所转换的数据转换后的结果是一个无限循环的二进制小数,因此给其一个默认的精确度

if(scale==0){

scale = (String.valueOf(deci).length()-2)*4;

}

int index = 0;

StringBuilder inteStr = new StringBuilder();

double tempD = 0.d;

while(true){

if(deci==0 || index==scale){

while(index%4!=0){

inteStr.append(“0”);

index++;

}

break;

}

if(index==0){

inteStr.append(“.”);

}

tempD = deci*2;

inteStr.append((int)tempD);

deci = sub(tempD ,(int)tempD);

index++;

if(index%4 == 0){

inteStr.append(” “);

}

}

return inteStr.toString();

}

/**

* 提供精确的减法运算。

* @param v1 被减数

* @param v2 减数

* @return 两个参数的差

*/

public static double sub(double v1, double v2) {

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.subtract(b2).doubleValue();

}

}

例如将十进制数1234.5转成二进制数为:0100 1101 0010.1000

java里面二进制 八进制 十进制 十六进制怎么互相转换,有什么规律?

=============(正)十进制转二进制

除二将余数倒置

eg: 127 /2

商:63 /2 31 /2 15 /2 7 /2 3 /2 1

余数:1 1 1 1 1 1

1111111

=============(负)十进制转二进制

1、先求负数绝对值的二进制

2、将得到的二进制完全取反+1

eg: -12

1、0000 1100

2、1111 0011 + 1 = 1111 0100

=============(正)十进制转八进制

除八将余数倒置

eg:54 /8 =66

6

6

=============(负)十进制转八进制

1、先将十进制转为二进制

2、再将二进制转为八进制

eg:-32

1、0010 0000

2、1110 0000

3、三位三位转

340

=============十进制转十六进制

1、先将十进制转为二进制

2、将二进制转为十六进制

=============二进制转为十进制

(正)二进制位上的各个数字乘以以2为底数,以自然数为次幂(自然数从0开始)

0110 1011 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 + 0*2^4 + 1*2^5 + 1*2^6 = 107

(负)

1、首先得到负号

2、将该二进制数取反+1

3、将得到的数转为十进制加上负号。

=============二进制转八进制

(1)将二进制三个三个分为一组,分别求出每组二进制的八进制值,将所得到的值依次排开

(2) 1、将二进制转为十进制

2、将十进制转为八进制

============二进制转十六进制

将二进制四个四个分为一组,分别求出每组二进制的十六进制值,将所得到的值依次排开

============八进制转二进制

(1)将八进制各个位上的数单个转为二进制,不足三位的补0

eg:127 001 010 111

(2) 1、将八进制转为十进制

2、再将十进制转为二进制

============八进制转十进制

八进制位上的各个数字乘以以8为底数,以自然数为次幂(自然数从0开始)

543 3*8^0 + 4*8^1 + 5*8^2 = 355

============八进制转十六进制

1、先将八进制转为二进制

2、再将所得的二进制转为十六进制

============十六进制转二进制

将十六进制各个位上的数单个转为二进制,不足四位的补0

eg:127 0001 0010 0111

============十六进制转其他进制

都需要先转为二进制,再转为其他进制

java进制转化算法(十进制转二进制java算法)

Java里的十二进制,六进制,二进制,分别怎么转换?

转换为2的几何级数倍进制比较容易,其他的就不方便了。

先说和10进制的转换:

倒序将2进制数编幂数,例如10101010从后向前幂数依次为7654321,所以它转换为10进制就是1*2^7+0*2^6+1*2^5+0^2^4+1*2^3+0^2^2+1^2^1+0^2^0=170,这种算法适用于将任意进制转换为10进制,只要将底数替换即可。

下面说2的几何级数倍的算法:

一般就是将2进制按2的级数进行分段,比方说8进制(8是2的3次方),将2进制分为每3位一段进行转换,每段单独按十进制转换即可。

10101010,分为10|101|010,然后每段进行单独转换,10转换后为2,101转换后为5,010转换后为2,所以10101010(2)=252(8)。

其他进制一般算法就是先将2进制转换为10进制,再用短除法转换为其他进制,短除法我记不清怎么个算法了,并不是算公约数之类的那个短除法,借位算法比较特殊,只不过最后余数作为最后一位。

例如170(10)进制就使用170=332(7)

java实现:整数进制相互转换

java实现:整数进制相互转换的方法:

十进制转为二进制、八进制、十六进制, 用  Integer.toXXXString()方法

(1)十进制转为二进制: Integer.toBinaryString(int i); 

public static String toBinaryString(int i):以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。

(2)十进制转为8进制 :Integer.toOctalString(int i);

public static String toOctalString(int i):以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。

(3)十进制转为16进制:   Integer.toHexString(int i);

public static String toHexString(int i):以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。

举例:

String bin = Integer.toBinaryString(10);

String oct = Integer.toOctalString(10);

String hex = Integer.toHexString(10);

2.十六进制、八进制、二进制转为十进制(有两种方法):parseInt() 和valueOf()。

Integer.parseInt(String s,int radix);

public static int parseInt(String s,int radix) throws NumberFormatException{}使用第二个参数作为指定的基数,将字符串参数解析为有符号的整数;

Integer.valueOf(String s,int radix);

public static Integer valueOf(String s,   int radix) throws NumberFormatException{}返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值。

举例:

try{

      int i = Integer.parseInt(“a”, 16);

      //输出为10进制数10

      System.out.println(i);

     }catch (Exception e){

      e.printStackTrace();

    }

try{

            //十六进制转成十进制

            String hex = Integer.valueOf(“FFFF”,16).toString();

            System.out.println(hex);

            //八进制转成十进制

            String oct = Integer.valueOf(“12”,8).toString();

            System.out.println(oct);

            //二进制转十进制

           String bin = Integer.valueOf(“0101”,2).toString();

           System.out.println(bin);

        }catch (Exception e){

            e.printStackTrace();

        }

用java 写一个10进制转16进制的算法 怎么写

import java.util.Scanner;

public class TentoSixteen{

    private static StringBuilder sum = new StringBuilder();

    private static int rulst; //定义一个结果,记录数与15的与运算结果,求得原数二进制最后四位的值

    private static int count; //若数的二进制不止四位,定义一个数来记录除去后四位的新数,运用递归作用与rulst相同

    private static void TtoSMethod1(int i) { //JDK自带的转化方法

String exchanged = Integer.toHexString(i);

System.out.println(exchanged);

}  

private static void Sop() { //将得到的字符串反转

   System.out.println(sum.reverse().toString());

}

private static void subim(int rulst) {//判断是否超出10,根据十六进制的规则超出10部分由字母ABCDEF代替

if(rulst10) {

       sum.append(rulst);

       }else {

       sum.append((char)(‘A’+(rulst-10)));//将int强制转换为char

  }

}

private static void TtoSMethod2(int i) {

    rulst =i15;

    if(i(14)i=0) {//判断数有多少位,大于0小于16,则转换后打直接印

       subim(rulst);

      }else {//不止四位的数则用递归来多次运算

       count=i4;//除去最后四位

       subim(rulst);

       TtoSMethod2(count);//递归直到count为0止       

 }

public static void main(String []args) {

@SuppressWarnings(“resource”)

Scanner scan = new Scanner(System.in);

        System.out.println(“请出入一个十进制数:”);

        int num = scan.nextInt();

 TtoSMethod1(num);//自带方法

 TtoSMethod2(num);//自定义方法,可将任意的十进制转化为十六进制

 Sop();//输出

 }

}

关于java进制转化算法和十进制转二进制java算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月31日 01:33:21
下一篇 2024年3月31日 01:42:36

相关推荐

  • linuxjava安装,linux安装java

    linux下怎么安装java环境 1、下载并安装Java:首先需要从Oracle官网下载适合您Linux版本的Java Development Kit(JDK)安装包并安装到您的系统中。设置JAVA_HOME:打开终端并运行以下命令,将安装路径替换成您Java实际安装的路径。 2、安装。在终端输入。/jdk-6u3-Linux-i586-rpm.bin,按提…

    2024年5月21日
    5100
  • c语言获取qq红包金额,c语言红包分配算法

    C语言问题,答对加QQ有红包 首先fopen 打开字典文件“dictionary.txt”,并且打开“article.txt”文件。然后用article.txt中的 文件 与 字典文件 流中的字进行对比。每次找到错误的 或者不存在的 就记录,最好用链表记录。 感觉这个不容易啊。结构体,链表。然后查询,增加,修改,删除,都是难点啊。 一定要一一对应。4) pr…

    2024年5月21日
    3800
  • java实现新浪微博爬虫,Java实现爬虫

    如何用Java写一个爬虫 优先抓取权重较高的网页。对于权重的设定,考虑的因素有:是否属于一个比较热门的网站链接长度link到该网页的网页的权重该网页被指向的次数等等。 方法1:每个线程创建一个自己的队列,图中的queue可以不用concurrentQueue,优点:不涉及到控制并发,每个网站一个线程抓取一个网站,抓取完毕即自动回收销毁线程。控制方便。 一般来…

    2024年5月21日
    5100
  • java如何设置string编码,java string 指定编码

    java如何把string转为utf-8 java不同编码之间进行转换,都需要使用unicode作为中转。 读写是两个不同的分支,通常都是分开单独使用的,只需要在存文件的时候设定文件编码格式为UTF-8就可以了。 byte[]转string String isoString = new String(bytes,ISO-8859-1);String srt2…

    2024年5月21日
    4000
  • java删除文件最后一行,java删除文件中的一行

    java如何根据指定字符串删除文本文件中的相应一行 1、删除不好做,因为你是一个文件内容的删除。可以用字符串数组来保存每一行的值,删除了之后,再重新保存进去。 2、按行读取文本,写入一个StringBuilder或StringBuffer对象中,循环写入时判断删除行时不写入,最后将拼接的字符串写入原文件即可,这里面需要注意存储字符串长度。 3、额,因为你操作…

    2024年5月21日
    3300
  • c语言算法编程题,c语言编程算法题目

    关于C语言的编程题!! 【程序1】题目:有4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是4。组成所有的排列后再去 掉不满足条件的排列。 编写一个程序,从键盘输入一个字符串,输出该字符串中所有的单词。编写一个程序,将输入的字符串反转后输出。编写一个程序,求出两个整数的最大公约数和最小公倍数。 下面是一个…

    2024年5月21日
    3800
  • java编译还是解释,java需要编译器和解释器

    java是编译型还是解释型语言 1、java语言属于混合型语言,是解释型语言和编译型语言之间的一种语言,是一个支持网络计算的面向对象程序设计语言,吸收了Smalltalk语言和C++语言的优点,并增加了其独有特性,如支持并发程序设计、网络通信、和多媒体数据控制等。 2、它既不属于传统的编译型语言也不属于解释型语言。它是先编译成.CLASS字节码文件,然后再利…

    2024年5月21日
    3400
  • futurejava超时,java中futuretask

    关于Java线程超时退出的问题. java写文件流返回线程超时可以进行中断处理,包括中断线程并且返回超时的结果,有时候线程已经在执行了,是无法中断的,程序要返回超时的结果。 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。 使用interrupt方法中断线程。使用退出标志终止线程 …

    2024年5月21日
    3200
  • 2017年深圳java开发的简单介绍

    java开发用什么框架2017 五大框架是:struts2 servlet hibernate spring mybatis 拓展:Spring是什么:Spring是一个轻量级的DI和AOP容器框架。 (1)Visual Studio 2017社区版的安装文件是exe可执行文件,其命名格式为“vs_community__编译版本号.exe”,笔者在写作本书时…

    2024年5月21日
    4400
  • 安卓4.2java模拟器的简单介绍

    谁有安卓4.2.1能用Java模拟器 1、Android SDK Emulator 是谷歌手机应用开发包中的一个模拟器组件,它可以在Windows、Mac或Linux电脑上运行,这个模拟器是用来让开发者开发软件时进行测试的。 2、安卓版的Java模拟器可以实现在安卓手机端运行Java手机软件。在安卓平台风靡全球之前,Java平台(或称J2me)的手机也曾盛极…

    2024年5月21日
    4200

发表回复

登录后才能评论



关注微信