黑马程序员_Java基础:十进制转换其他进制
------- android培训、java培训、期待与您交流! ----------
平时使用中,进制转换只要使用Integer这个包装类中的方法即可完成。
但其实我们也能用自己的方法去实现,这有助于初学者对于计算机底层运算的理解。下面例子使用了查表形式的方法来完成的进制的转换。
在开始前,需要先理解清楚各个进制的特点还有位的概念。
众所周知,在计算机中,内存保存的都是二进制的数据,即通过0,1来表示数据的内容。
位(bit)就是代表二进制数据个中的每一个0或1,bit是计算机中的最小单位。
需要注意的是计算机基本存储单位是字节(byte),它用8个二进制位表示,即1 byte = 8 bit。
java可以支持八进制,十进制,十六进制的表示,分别是:
八进制:前置0,如用八进制表示5要写成05。
十进制:不需前置,如5就是十进制中的5.
十六进制:前置0x或者0X,如用十六进制表示5要写成0x5。
如果生成值为60的int类型的数据,它在内存会占用32位的空间。如下所示:
0000-0000 0000-0000 0000-0000 0011-1100
十六进制的数值用0~9和A~F这16个数来表示,当满足16,则进位。60在java中用十六进制来表示为:0x3C,在内存中表现为:

八进制的数值用0~7这8个数来表示,当满足8,则进位。60在java中用八进制来表示为:074,在内存中表现为:

从以上规律可以看出,二进制中每4个位(2的4次幂=16),就表示十六进制中1个位,而要得出16进制位上的数值,可以使用位运算 & 15(二进制数1111)得出。
同理,二进制中每3个位(2的3次幂=8),就表示八进制中1个位,而要得出8进制位上的数值,可以使用位运算 & 7(二进制数111)得出。
基于以上的分析,可以设计一下代码:
class Transform
{
public static void main(String[] args)
{
toHex(60);
toba(60);
toBin(60);
} //十进制转二进制
public static void toBin (int num)
{
trans(num,1,1);
} //十进制转八进制
public static void toba (int num)
{
trans(num,7,3);
} //十进制转十六进制
public static void toHex (int num)
{
trans(num,15,4);
} // 具体转换过程。
// 方法中第一个参数为需要转换的数 ,第二参数为位运算&上的数,第三个参数为要移动的二进制位。
public static void trans (int num,int base,int offset)
{
// 定义一个数组,角标对应数值,可以看做一个查询表。
char[] chs = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
char[] arr = new char[32];
int pos = arr.length; if(num==0)
{
// 如果要转换的数为0,则无需转换。
System.out.println(0);
} while(num!=0)
{
// 得出指定进制中每一位的数值,存入一个数组中。
int temp = num & base;
arr[--pos] = chs[temp];
// 每得出一个指定进制一个位上的值后,原数值的二进制位就往右移动指定位数,并在前面补零。
num = num >>> offset; //移位补零。
} for(int x=pos;x<arr.length;x++)
{
if (x==(arr.length-1)) {
System.out.println(arr[x]);
} else {
System.out.print(arr[x]);
}
}
}
}
黑马程序员_Java基础:十进制转换其他进制的更多相关文章
- 黑马程序员_Java基础视频-深入浅出精华版--视频列表
\day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...
- 课程2:《黑马程序员_Java基础视频-深入浅出精华版》-视频列表-
\day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...
- 黑马程序员_Java基础组成
Java语言基础组成 2.1关键字 main不是关键字,但被JVM所识别的名称. 关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词. 特点:关键字中所有字母都为小写. 用于定义数据类型的关 ...
- 黑马程序员_Java基础:网络编程总结
------- android培训.java培训.期待与您交流! ---------- Java语言是在网络环境下诞生的,它是第一个完全融入网络的语言,虽然不能说它是对支持网络编程做得最好的语言,但是 ...
- 黑马程序员_Java基础视频-深入浅出精华版--PPT 文件列表
\day01\code\第一章_Java概述.ppt;\day01\resource\资料\50道编程题(有精力的同学看看).doc;\day01\resource\资料\Sun_Java程序员认证考 ...
- 黑马程序员_java基础笔记(09)...HTML基本知识、CSS、JavaScript、DOM
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— 基本标签(a.p.img.li.table.div.span).表单标签.ifra ...
- 黑马程序员_java基础笔记(02)...java语言基础组成
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— java语法(1:关键字,2:标识符,3:注释,4:常量和变量,5:运算符,6:语 ...
- 黑马程序员_java基础笔记(05)...String类
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— java.lang包 基本信息中 String就是C++.java等编程语言中的字符 ...
- 黑马程序员_Java基础:IO流总结
------- android培训.java培训.期待与您交流! ---------- IO流在是java中非常重要,也是应用非常频繁的一种技术.初学者要是能把IO技术的学透,java基础也就能更加牢 ...
随机推荐
- jquery tmpl遍历
最近发现大家用模板渲染一些顺带逻辑功能代码块时,用jquery tmpl较多,遇到了一些问题,现在就个人以前研究过的一切常用功能作介绍,主要针对遍历,其它的大家可以自行浏览一起网站,如:http:// ...
- backbone.js学习笔记
之前只接触过jQuery,看来Backbone是除了jQuery的第二大JS框架... backbone到底是个啥? 其实刚开始我也不知道=_=,我是这周二才听说居然还有这么个框架...于是乎我的导师 ...
- 实现Base64加密解密
using System; using System.Text; namespace Common { /// <summary> /// 实现Base64加密解密 /// </ ...
- teamviewer 过期解决办法
参考资料: http://blog.csdn.net/z249683156/article/details/41842271
- [vivado系列]设置Xilinx Documention Navigator
版本:2015.1 ------------------------------------------ 这是一个很便利FPGA工程师的文档整理收纳神器. 针对个人使用上的习惯,进行简单的2项设置. ...
- linux系统各目录存储的文件类型
/etc 存储各种配置文件 /etc/init.d/ 目录下包含许多系统各种服务的启动和停止脚本.具体可见:http://blog.csdn.net/gongweijiao/article/detai ...
- CSS布局--浮动与清除
浮动和清除 浮动和清除是页面布局的重要属性.浮动的意思是指将元素从常规的文档流中取出来. 当你浮动一个元素的时候,浮动的元素会被浏览器尽量的往上放,能放多高就放多高,一直到某个元素的边界为止. 浮动元 ...
- Icinga快速安装与配置
Icinga快速安装与配置/* body */body { margin: 20px; padding: 0; font-family: "Lucida Grande", &quo ...
- DropDownList怎样动态绑定数据库中的某一条数据
用Ajax动态绑定数据库的数据:点击后台查看代码,编写代码如下 if (!IsPostBack) { using (SnailTechDataContext con = new SnailTechDa ...
- Oracle 取随机数(转)
1.从表中随机取记录 select * from (select * from staff order by dbms_random.random) where rownum < 4 ...