学Java的第九天--进制

🍕🍕计算机中不同进制的使用说明(整数)

二进制(binary):0,1,以0b或0B开头。
十进制(decimal):0-9。
八进制(octal):0-7,以0开头
十六进制(hex):0-9,A-F;以0x或0X开头。此处A-F不区分大小写。

🍷进制也可以调用方法进行转换
在这里插入图片描述

🍷测试:

class BinaryTest{
	public static void main(String[] args)
	{
	int num1 = 0b110;
	int num2 = 110;
	int num3 = 0127;
	int num4 = 0x110A;
	System.out.println("num1 = " + num1);
	System.out.println("num2 = " + num2);
	System.out.println("num3 = " + num3);
	System.out.println("num4 = " + num4);
	}
}

结果如下:(注意进制,num1是二进制,num2是十进制,num3是八进制,num4是十六进制)
在这里插入图片描述
🍷解决之前一个问题
代码如下:

class BinaryTest{
 public static void main(String[] args)
 {
 int i1 = 128;
 byte b = (byte)i1;
 System.out.println(b);
 }
}

结果如下:是-128
在这里插入图片描述
为什么呢?
众所周知,计算机中数据以补码形式存放
int型(32位)的128在计算机中为
0000 0000 0000 0000 0000 0000 1000 0000
而强转为byte型(8位),直接截掉前面,保留八位,为 1000 0000,此时首位表示符号位,而不是数值,而补码为1000 0000 的数的十进制为-128,所以输出的是-128
🍷补充一个面试题
如何求一个0~255范围内整数的十六进制值,例如60的十六进制为3C?
方式一:自动实现
String str1 = Integer.toBinaryString(60);
String str2 = Integer.toHexString(60);
方式二:手动实现,思路二进制四位一组
int i1 = 60;
int i2 = i1 &15//位运算,取出最低四位,这时应该是12
String j = (i2 >9)?(char)(i2-10+‘A’)+"" : i2+"";//把12变为C,加“” 目的是让这些都变成字符串
int temp = i1 >>>4;//把高四位右移变为低四位【不懂这个的话看一下第十篇运算符,链接:https://blog.csdn.net/xxq1415286/article/details/104896721】
String j = (i2 >9)?(char)(i2-10+‘A’)+"" : i2+"";//重复上上步操作,完成高四位的转换
System.out.println(k+""+j)//j与k做连接运算

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值