黑马程序员_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基础也就能更加牢 ...
随机推荐
- 4.Single Number && Single Number (II)
Single Number: 1. Given an array of integers, every element appears twice except for one. Find that ...
- dbus
http://blog.csdn.net/zyz511919766/article/details/7700498 http://maemo.org/maemo_training_material/m ...
- BVT & BAT & SVT
1. BVT(Build Verification Test) a. BVT概念 Build Verification test is a set of tests run on every new ...
- CodeBlocks配置pthread环境
参考资料:MinGW配置pthread环境 按[参考资料]里说的[下载资源]后,将libpthreadGC2.a放到codeBlocks安装目录下的MinGW\lib目录下,然后将pthread.h ...
- 简单来谈谈alloc分配器
之前说道alloc是原G2.9版本的默认的分配器,这篇就把alloc的原理梳理梳理,顺便简单介绍下有关的内存管理. 一般而言,我们通常习惯的内存分配操作和释放操作是这样的: class Foo {…} ...
- Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2 部分
HSQLDB 开发者角色 对 HSQLDB 与 Eclipse 工作台的集成感兴趣的开发者可以很容易地被分为两类: 客户机开发者,他们只是用 HSQLDB 来存储数据. 引擎开发者,他们通过添加新的标 ...
- Nginx 学习
1.Nginx编译安装 nginx依赖于pcre库,需要先安装pcre(二进制包,跟正则表达式有关),pcre-devel(头文件) configure --prefix=/usr/local/ng ...
- IRunningObjectTable接口
IRunningObjectTable接口
- select、epoll、twisted网络编程
select.poll和epoll的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组 ...
- MySQL_财务统计各产品品类各城市上周收入毛利表_20161202
注:财务需要统计各产品品类各城市上周毛利情况 下面这样的表是沟通后展现的形式.数据展现形式我认为的大都是行列转 列转行的转置 从财务角度这样展现形式比较适合. 由于黄色部分为汇总项目,因此我拆分成9个 ...