java 进制转换 十进制转二,八,十六进制

十进制转其他进制

因为在java中位运算符是直接对数值的二进制数进行操作的 并且 写的是二进制数在输出和操作时是以十进制数的形式;
所以十进制转二,八,十六进制;就已经实现了二进制,八进制,十进制,十六进制的相互转换。

1)十进制转其他进制&&其他进制的互相转换:使用这三种方式
2)其他进制转十进制:直接使用int、long即可

在这里插入图片描述

使用java API实现

十进制转二进制:Integer.toBinaryString();
十进制转八进制:Integer.toOctalString();
十进制转十六进制:Integer.tohexString();

class BaseSystemDemo1 {public static void main(String[] args) {//十进制转其他进制//1.使用java API实现//十进制转二进制int num=80;String BinStr=Integer.toBinaryString(num);//十进制转八进制String OctStr=Integer.toOctalString(num);//十进制转十六进制String HexStr=Integer.toHexString(num);System.out.println(BinStr);//1010000System.out.println(OctStr);//120System.out.println(HexStr);//50}
}

使用除基倒取余法实现

十进制转二进制

一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2…依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数

代码1:使用int类型

       //十进制转二进制//1.方法1:除基倒取余法//1_1:使用int类型/*一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数*/int num=80;int r=0;//余数int t=0;//位数int bin=0;//最后的二进制数while(num!=0){r=num%2;num/=2;bin+=r*(int)(Math.pow(10,t));//每次求余后把余数存储在int型数的低位,依次递增t++;//位数加1}System.out.println(bin);//1010000

代码2:使用String类型

 //1_2:使用String类型int number=80;String strBin="";while(number!=0){// 0    0       ""// 00   0        0//...//1000   1      0000//number%2在strBin的前面,就是每次把新的余数放在字符串的首部,即实现了逆序余数strBin=number%2+strBin;number/=2;}System.out.println(strBin);//1010000

十进制转八进制

代码1:使用int类型

		//十进制转八进制//方法1:除基倒余法//1_1:使用int类型int num=80;int r=0;//余数int t=0;//位数int oct=0;//最后的八进制数while(num!=0){r=num%8;num/=8;oct+=r*(int)(Math.pow(10,t));t++;}System.out.println(oct);//120

代码2:使用String类型

//1-2:使用String类型int num1=80;String str="";while(num1!=0){str=num1%8+str;num1/=8;}System.out.println(str);//120

十进制转十六进制

因为十六进制是0-9,A-F,所以只能使用String存储
代码:

       //十进制转十六进制//方法1:除基倒余法//1:使用String类型int num2=842;String hexStr="";int n=0;while(num2!=0){n=num2%16;   //注意加上"",防止进行数值运算hexStr=((n>9)?(char)(n-10+'A')+"":n+"")+hexStr;num2/=16;}System.out.println(hexStr);//34A

使用位运算符&(按位与)与>>(右移)实现

十进制转二进制

n>>1 :无符号右移>>>,获取n的二进制的下一位
n&1:按位与&,刚好能够得到n的二进制的最低位;
再逐一输出即可
假设一共32位,减1(最后的一位不需要移动,本身就有1位数在最低位,所以-1),再每次移动减少1位

代码1:直接输出

        //方法2:位运算>>>与&//2_1:直接输出int n=80;//从最高位开始移动,直到最低位for(int i = 31;i >= 0; i--){/*n>>1 :无符号右移>>>,获取n的二进制的下一位n&1:按位与&,刚好能够得到n的二进制的最低位再逐一输出即可*/System.out.print(n >>> i & 1);//00000000000000000000000001010000}System.out.println();

代码2:使用String类型

        //2_2:使用StringString str="";int m=80;for(int i=31;i>=0;i--){str+=(m>>>i&1)+"";}System.out.println(str);//00000000000000000000000001010000

十进制转八进制

假设一共32位,减2(最后的三位不需要移动,但每次移动3位,最后会需要补充1位数,所以只需要-2),再每次移动减少3位

代码1:直接输出

 //方法2:使用位运算符>>与&//2-1:直接输出int num2=80;//假设一共8位,减2(最后的三位不需要移动,但每次移动3位,最后会需要补充1位数,所以只需要-2),再每次移动减少3位//000 000 000for(int i=6;i>=0;i-=3){System.out.print((num2>>>i)&7);//120}System.out.println();//假设一共32位,减2(最后的三位不需要移动,但每次移动3位,最后会需要补充1位数,所以只需要-2),再每次移动减少3位for(int i=30;i>=0;i-=3){System.out.print((num2>>>i)&7);//00000000120}System.out.println();

代码2:使用String类型

  //2-2:使用String类型int num3=80;String octStr="";for(int i=30;i>=0;i-=3){octStr+=(num2>>>i)&7;}System.out.println(octStr);//00000000120

十进制转十六进制的演化过程1

1.使用&15得到num的最后四位二进制数,每四位二进制数为1位十六进制数
2.因为输出时,都是以十进制来输出的,所以只需要把num3的十进制大于9的转换为A-F;并且因为输出的可能是数值也可能是字符,使用字符串类型
3.num3>>4获得倒数第二个四位二进制数;并重复上述操作
4.连接字符串

代码1

class BaseSystemDemo2 {public static void main(String[] args) {//十进制转其他进制//2.使用位运算符&(按位与)与>>(右移)实现//原理:位运算符是直接对数值的二进制形式进行操作的//n&1 n&7 n&15:按位与&,刚好能够得到n的二进制的最后的位数//n>>1 n>>3 n>>4:右移>>,获取n的二进制的下一段//十进制转十六进制//1)使用&15得到num的最后四位二进制数,每四位二进制数为1位十六进制数int num=80;int num3=num&15;//2)因为输出时,都是以十进制来输出的,所以只需要把num3的十进制大于9的转换为A-F//因为输出的可能是数值也可能是字符,使用字符串类型String HexStr1=(num3>9)?(char)(num3-10+'A')+"":num3+"";//3)num3>>4获得倒数第二个四位二进制数int num4=(num>>4)&15;String HexStr2=(num4>9)?(char)(num4-10+'A')+"":num4+"";//4)连接两个字符串String HexStr=HexStr2+HexStr1;System.out.println(HexStr);//50}
}

十进制转十六进制的演化过程2

假设一共32位,减4(最后的四位不需要移动,所以-4),再每次移动4位
使用三元运算符输出其中大于9的字符:(n1>9)?(char)(n1-10+‘A’)+"":n1+""

代码1:直接输出

//方法2:使用位运算符>>>和&//2-1:直接输出int num3=842;int n1=0;//假设一共8位,减4(最后的四位不需要移动,所以-4),再每次移动4位for(int i=4;i>=0;i-=4){n1=(num3>>>i)&15;System.out.print((n1>9)?(char)(n1-10+'A')+"":n1+"");//4A}System.out.println();//假设一共32位,减4(最后的四位不需要移动,所以-4),再每次移动4位int n2=0;for(int i=28;i>=0;i-=4){n2=(num3>>>i)&15;System.out.print((n2>9)?(char)(n2-10+'A')+"":n2+"");//0000034A			}System.out.println();

代码2:使用String

//2-2:使用String类型int num4=842;String hexStr1="";int n3=0;for(int i=28;i>=0;i-=4){n3=(num4>>>i)&15;hexStr1+=(n3>9)?(char)(n3-10+'A')+"":n3+"";}System.out.println(hexStr1);//0000034A

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

密码学专题 密钥生成|分组加密的模式 ECB|CBC|CFB|OFB

密钥生成 如何安全地生成密钥。即如何生成可信任的密钥,保证用户得到的密钥是安全的, 生成密钥的机器或程序是可信的。如何生成安全的密钥。安全的密钥没有统一准确的定义,但一般来说是指密钥抗 猜测和抗穷举等针对密钥攻击的能力。涉及密钥…

excel高级筛选怎么用_Excel表格中高级筛选的优点以及常用方法介绍

在Excel表格中普通的数据筛选只能满足一些基本的筛选要求,这篇文章为朋友们总结一下高级筛选的优点以及常用方法。一.与普通筛选相比,高级筛选可以使用比较运算符。在下图中要筛选性别为男并且评分大于90的人员。如果使用普通筛选需要一个个的勾选成绩大…

STL源码剖析 第二次温习 细节审核

临时对象的产生 临时对象也叫做 无名对象,(使用pass by value的方式会引发copy的操作,于是产生一个临时的对象),造成效率的负担,但是可以可以制造一些临时对象在型别的后面 直接加上() 并可以指定初始数值,相当于调用…

java 彩票游戏

题目 Math.random()获取随机数 Math.random()返回的是一个[0.0,1.0)的doule类型的数 所以,获取0-9:(int)Math.random()*10–> [0,10) 获取0-10:(int)Math.random()*101–> [0,11) 获取10-99:(int)Math.random()9010–> […

python异常处理_Python入门 断言与异常处理

一、断言断言,可以理解为判断是否断开的预言。assert 表达式 , 描述表达式为我们的预期结果,当表达式的结果为False时,抛出 AssertionError 异常,如无异常捕获程序遇到异常时直接结束运行。反之,表达式结果为True 程序…

百度关键词排名查询源码_章丘百度霸屏总部,关键词排名腾沃云

上海保沃腾沃云为您详细解读URiIr章丘百度霸屏总部的相关知识与详情,做网站SEO优化文章内容优化效果已经十分明显。内容的量量关于网站的整体量量很重要。通过关键字阐发,陈某们晓得需要环绕关键字编写网页。使您的内容的重要根底是您对网页筹算描述的卖…

密码学专题 数据填充的方式|序列加密的方式

电子密码本模式和加密分组链接模式的分组算法都要求加密输入的分组是固定长度 的,但是大多数输入明文可能都不是分组长度的整数倍,也就是说,最后一个分组一般来 说是不足一个分组长度的。为了使分组加密算法能够正常工作,通常使用…

win10此电脑不见了_教程 | win10总提示“你要允许此应用对电脑的修改吗”,如何关闭?...

在使用电脑的时候,你是否曾遇到过这样的情况,点击打开软件的时候,系统总是提示我们“你要允许此应用对你的设备进行修改吗?”难道是软件中病毒了吗?,这其实上并没有什么用处,只是系统无法判断软…

密码学专题 加密模式的选择|传输数据加密

分组加密模式和序列加密模式。它们之间最大的区 别在于分组加密模式每次对一组数据进行加密运算处理,而序列加密模式则逐位对数据进 行加密运算处理。事实上,在实际设计应用的算法中,并没有那么严格的区别,它们有可能是相互结合的…

微信公众号数据2019_2019年9月原创公众号排行榜数据报告出炉

西瓜数据发布 2019 年 9 月原创公众号排行榜,分别从西瓜指数、原创文章占比、周期内公众号发文次数、发文篇数、总阅读数、头条平均阅读数等方面展示公众号数据。榜单说明1、涉及榜单本期月榜截取 ①财经、②教育、③娱乐、④科技、⑤体育、⑥游戏、⑦文化、⑧美食、…

密码学专题 OpenSSL专题

OpenSSL总体架构 软件包分为三个主要的功能部分:密码算法库 、 SSL协议库及应用程序 MacOS,MS,OS/2及 VMS这几个目录,包含了在不同的 平台编译时的环境变量配置文件,在安装编译完成之后,这几个目录就没有作…

java 华氏温度转换为摄氏温度

题目 小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。 它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。 公式:华氏温度(摄氏温度-32)/1.8 M…

hs控什么意思_凡尔赛文学 到底是什么?

点击蓝字关注我们XIE XIE NI DE XI HUAN|| 动漫 情头 耽美 闺蜜 男女头 句子控 壁纸 ||左句 凡尔赛文学野象:老是有人提知不知道凡尔赛文学,说实话我不太清楚网络时下流行的梗,也没有兴趣参与,我还是比较喜欢欧洲古典文学和后现…

密码学专题 openssl编译和安装

Configure 脚本文件 使得OpenSSL可以适应多种不同的系统平台和多达几十种不同的编译器。Configure指令还可以使OpenSSL在编译的时候具备组件的选择功能,比如可以选择支持或者不支持某种算法或者协议等,这使得OpenSSL具有很大的灵活性,比如在…

Python学习12 文件的读写

目标 文件的打开和关闭 mode缺省情况下表示只读r 文件的路径 前面加个r’,代表其中的转义字符不起作用 文件的打开方式 案例:实现文件拷贝的功能 将某一文件夹下的某一文件 保存在当前文件 所在目录。 import os #读取文件1 path./file.txt fileopen(path,…

密码学专题 openssl的基本概念

配置文件 配置文件是OpenSSL的一个基础结构组件,OpenSSL使用一组称为OpenSSLCONF的函数来读取OpenSSL配置文件的信息。OpenSSL提供的主配置文件是opensl.cnf,它集成了OpenSSL所要使用的配置文件选项的大部分内容。此外,OpenSSL还提供了其他一…

该工程中的宏被禁止_建筑劳务分包都能承担什么工程

来源:找法网建筑工程的承包单位,也就是总承包单位可以将部分建造工程分包给具有资质的施工单位,这是法律所允许的,但是禁止将建造工程进行转包。一、建筑劳务分包都能承担什么工程建筑劳务分包能承担什么工程要看分包单位的资质&a…

matlab用辛普森公式求积分_积分近似计算之辛普森公式

对于积分区间[a, b],若则成立辛普森公式辛普森公式可看作是改良的梯形公式。梯形公式是以直线逼近实际曲线,而辛普森公式则以二次曲线(即抛物线)逼近。以二次曲线逼近实际曲线根据辛普森公式可得各积分小区间内的积分值如下式所示:其中于是&a…

密码学专题 文件编码格式

OpenSSL中虽然使用PEM作为基本的文件编码格式,但是,由于不同的对象其封装的标准格式不太一样,所以经常会导致读者产生迷惑。此外,OpenSSL也支持DER编码和过时的Netscape编码格式(NET)OpenSSL的编码是基于ASN.1标准的,A…

echarts 折线图 设置y轴最小刻度_【硬货】vue全家桶+Echarts+百度地图,搭建数据可视化系统...

作者丨夙言来源丨前端大牛爱好者(Web-2017)https://segmentfault.com/a/1190000018993981本文章篇幅略长,内容有点多,大佬可根据目录选择性查阅,新人可一步步来阅读。1、 前言1.1 业务场景突然接到产品说要做一个数据监控的系统。有线图、柱状…