JAVA学习之进制转换练习
2024-09-06 05:37:44
public static void main(String[] args)
{
toBin(60); toBa(60); toHex(60);
}
/**
十进制-->二进制
*/
public static int toBin(int num)
{
trans(num,1,1);
}
/**
十进制-->八进制
*/
public static int toBa(int num)
{
trans(num,7,3);
}
/**
十进制-->十六进制
*/
public static int toHex(int num)
{
trans(num,15,4);
}
/**
查表法
思路:
1.通过&方法获取最低进制位。
2.通过存储的数组获取对应的进制字符
3.通过>>>方法获取有效位数 参数:
num:十进制数
base:根据进制保留二进制位数用于计算每个值
offset:右移位数
*/
private static void trans(int num,int base,int offset)
{
if(num==0)
{
System.out.println(num);
return;
}
//表
char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
StringBuffer strb=new StringBuffer();
while(num!=0)
{
int temp = num & base;
strb.append(chs[temp]);
num = num >>> offset;
} System.out.println(strb.receive());//strb.receive():反转(如:011=>110)
} /**
num:十进制数
base:根据进制保留二进制位数用于计算每个值
offset:右移位数
*/
private static void trans(int num,int base,int offset)
{
if(num==0)
{
System.out.println(num);
return;
}
//表
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;
while(num!=0)
{
int temp = num & base;
arr[--pos] = chs[temp];//知识点:一、--pos:pos=pos-1;二、从数组后向前存储(arr[length-1]~arr[0])
num = num >>> offset;
}
for(int i=pos;i<arr.length;i++)
{
System.out.print(arr[i]);
}
}
原理:
最新文章
- ThinkPhp 3.2 ajax无刷新分页(未完全改完,临时凑合着用)
- 项目开发之UML之初识
- IPv6测试环境
- Pydev Debugger not working with breakpoints
- SAP资产明细报表
- WPF RichTextBox读取存储文本的方法和常用属性
- 怎样对CODESOFT中的条形码进行黑白转换
- LayoutInflater
- js高手
- python filter内建函数
- 4.锁--无锁编程以及CAS
- $translate 的用法
- rocketmq 启动和停止命令
- PHP7.X连接SQLSERVER数据库(CENTOS7)
- python常量 变量 数据类型 注释 交互 if语句
- angular 遍历foreach
- VirtualBox 桥接模式,虚拟机ping不通宿主机
- 初见SDN
- MySQL5.5 安装配置方法教程
- TensorFlow学习笔记:保存和读取模型