java学习之进制转换(指针思想,重在理解掌握)

/**
*
*/
package com.dreamly.day01;

/**
* @author dreamly
*
*/
public class ArrayTest {

public static void main(String[] args) {
// toBin(6);
// toO(60);
toHex(60);
}
/**
* 十进制转二进制
* @param num
* @param base
* @param offset
*/
public static void toBin(int num) {
trans(num,1,1);
}
/**
* 十进制转八进制
* @param num
* @param base
* @param offset
*/
public static void toO(int num) {
trans(num,7,3);
}
/**
* 十进制转十六进制
* @param num
* @param base
* @param offset
*/
public static void toHex(int num) {
trans(num,15,4);
}

/**
*
* 0 1 2 3 4 5 6 7 8 9 A B C D E F ==十六进制中的元素
* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
*
* 查表法处理进制转换
* 将所有元素临时存储起来,建立对应关系,每一次&base后的值作为索引去查看建立好的表,就可以找对应的元素
* 这样比-10+‘a‘简单
*
* 结果是反着的,正过来可以通过stringBuffer reverse功能来完成
* 也可以通过数组容器来完成存储
*
* @param num
* @param base
* @param offset
*/
public static void trans(int num,int base, int offset) {
if(num==0) {
System.out.println(0);
return ;
}
char[] chs= {‘0‘,‘1‘,‘2‘,‘3‘
,‘4‘,‘5‘,‘6‘,‘7‘
,‘8‘,‘9‘,‘A‘,‘B‘
,‘C‘,‘D‘,‘E‘,‘F‘};
char[] arr=new char[32]; //实例化时:在堆空间内的默认值初始值是‘\u0000‘,即--空隔
int pos=arr.length; //指针,此处巧用表达式来达成目的
while(num!=0) {
int temp=num&base;
arr[--pos]=chs[temp];
num=num>>>offset;
}

for(int x=pos;x<arr.length;x++) {
System.out.print(arr[x]);
}
System.out.println();
}

}

时间: 2024-10-04 21:30:52

java学习之进制转换(指针思想,重在理解掌握)的相关文章

JAVA学习笔记-进制转换

任意进制转换为十进制: 十进制转换为任意进制:

java中的进制转换

进制转换 首先是十进制转化为其他进制,如二进制,八进制,十六进制: 它们在java中都有专门的函数可供调用: 如:十进制转化为二进制时调用toBinaryString(); 十进制转化为八进制时调用toOctalString(); 十进制转化为十六进制时调用toHexString(); 代码实现: // 进制转化 public class Main_2 { public static void main(String[] args) { Integer a=new Integer(20); //

java byte 16进制转换

整型转16进制: int devIdInt = Integer.parseInt(devId); String devIdString = Integer.toHexString(devIdInt); 16进制转为字节: byte devBin = (byte) Integer.parseInt(devIdString, 16); byte devBin =Integer.valueOf(devIdString, 16).byteValue(); byte devBin =Byte.parseB

黑马程序员-java基础-数组&amp;进制转换

第一讲  数组初始化&操作 1.  数组定义 概念:数组是同一种类型数据的集合,其实数组就是一个容器.数组中的元素从0开始编号,这样方便了对这些元素进行操作(获取.修改改.排序等). 数组的定义格式有: Int[] arr = new int[10]; ——这里指定数组的长度,后续需要分别对每一个元素赋值: Int[] arr = new int[]{2,1,5,9}:——创建数组实体并初始化,不需要指定长度: Int[] arr = {2,1,5,9};——定义数组并初始化: 2.  数组操作

学习入门---进制转换

常用的进制数制:二进制.八进制.十进制.十六进制··· 计算机中采用的是二进制,因为二进制具有运算简单,易实现且可靠为逻辑设计提供了有了的途径.节省设备等优点··· 今天老师推荐了学习的方法:1.分类  2.建模型 并通过画图来讲解不同数制之间的转换关系,让我们更容易理解记忆 二进制转十进制,八进制转十进制: 1. 写底数 2. 写质数 3. 乘系数 4. 相加 十进制转二进制,十进制转八进制: 1. 除2(或8)取余 2. 除到商为0为止 3. 记号余数 4. 余数倒排 二进制转八进制(八进制

JAVA中的进制转换问题

十进制转成十六进制:  Integer.toHexString(int i) 十进制转成八进制  Integer.toOctalString(int i) 十进制转成二进制  Integer.toBinaryString(int i) 十六进制转成十进制  Integer.valueOf("FFFF",16).toString() 八进制转成十进制  Integer.valueOf("876",8).toString() 二进制转十进制  Integer.value

Java 大数任意进制转换

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); String s = cin.nextLine(); int x = cin.nextInt(); int y = cin.nextInt(); System.out.println(Transform(s,x,y)); } //s:输入的数字 x:

【java学习】进制

目录结构: contents structure [-] 为什么计算机代码需要2进制表示 原码.反码和补码的关系 为什么需要反码.补码 进制的转化 十进制和二进制的相互转化 八进制和二进制的相互转化 十六进制和二进制的相互转化 一个字节能够表示的数据范围 1,为什么计算机代码需要用2进制表示 大家都知道我们熟练的机制是十进制,也就是(0到9),逢10进1.如果要让电脑使用十进制,首先,应该让电脑能够识别出10个数字.通常的考虑是,通过元器件中电压的高低水平来分别标识10个数字.假如最高电压为10

Java中将10进制转换成16进制

import java.util.Scanner; public class Decimal2HexConversion {     public static void main(String[] args){         Scanner input = new Scanner(System.in);         System.out.print("输入一个十进制数: ");         int decimal = input.nextInt();         Sys