猿创征文|数据进制问题及 Java 中的数据进制问题

数据进制问题及 Java 中的数据进制问题

常用的几种进制

  • 前缀:用在数据输入(编辑器编辑程序)时,表示该数值是某种进制的。

  • 后缀:一般用在写出数据(纸面上写出)时,表示该数值是某种进制的。

  • 进制的后缀就是进制的英文名称的首字母的大小写。

  • 不同的编译环境,会选择性的支持前缀或后缀,及可能会支持前后缀的转换。

  • Java 支持进制前缀方式,后缀方式是否支持暂不明确。

十进制(Decimal)

  • 只有 0 ~ 9 十个值,计算方法是逢十进一

  • 日常生活和计算都是用十进制,比较好理解。

  • 前缀:无。

  • 后缀:d/D。

二进制(Binary)

  • 只有 0 和 1 两个值,计算方法是逢二进一

  • 0B 表示 0D,1B 表示 1D,10B 表示 2D,110B 表示 6D。

  • 进制如今主要应在电技术的数字电路中。如我们经常使的计算机能够识别的语言就是二进制语言

  • 前缀:0b/0B(数字 0 加上字母 b/B)。

  • 后缀:b/B。

八进制(Octal)

  • 只有 0 ~ 7 八个值,计算方法是逢八进一

  • 主要用来存储数据(与十六进制相比,较少使用)。

  • 7O 表示 7D,10O 表示 8D,12O 表示 10D。

  • 前缀:0(数字 0)。

  • 后缀:o/O(字母 o/O)。

十六进制(Hexadecimal)

  • 用数字 0-9 和字母 a-f(或其大写A-F)表示 0D 到 15D ,计算方法是逢十六进一

  • 只有 0 ~ 9 和 a ~ f 十六个值

  • a/A 表示 10D,b/B 表示 11D,c/C 表示 12D,d/D 表示 13D,e/E 表示 14D,f/F 表示 15D。

  • 主要用来存储数据,表示处理器的寄存器、存储器的地址、数据

  • 前缀:0x/0X(数字 0 加上字母 x/X)。

  • 后缀:h/H。

Java 中的进制问题

输入

  • Java 中,数值的默认输入方式是十进制没有前缀

  • 添加了 0b/0B前缀表示是二进制数值输入。

  • 添加了 0前缀表示是八进制数值输入。

  • 添加了 0x/0X前缀表示是十六进制数值输入。

  • 例子:(其中:100D = 64H = 1100100B = 144O

public class text {
	public static void main(String[] args) {
		// 十进制输入
		long l = 100;
		// 十六进制输入
		long l1 = 0X64;
		// 二进制输入
		long l2 = 0B1100100;
		// 八进制输入
		long l3 = 0144;
	}
}
  • 即:十进制数 100 = 十六进制数 64 = 二进制数 1100100 = 八进制数 144

输出

  • Java 中所有的基本类型的包装器类(Long、Double 等)都封装了进制(八、十六、二、十进制)转换的方法。

  • System.out.println() 输出的是字符串

  • 所有的数值在 Java 中展示(输入、输出)时,都默认按照十进制形式

  • toBinaryString() 方法,将传入的数值(不需要是十进制)转换成二进制形式的字符串。

  • toOctalString(x) 方法,将传入的数值(不需要是十进制)转换成八进制形式的字符串。

  • toHexString(x) 方法,将传入的数值(不需要是十进制)转换成十六进制形式的字符串。

  • 默认以十进制输出

  • System.out.println() 用于输出信息后追加一个空行

  • System.out.printf() 用于对输出内容进行格式化操作,可以添加 ‘\n’ 实现换行。

    • 具体的使用方法可以去看:System.out.printf()的使用方法

    • % 表示进行格式化输出。

    • %b` 表示 格式化输出布尔类型(全小写,即 true)%B` 表示 格式化输出布尔类型(全大写,即 TRUE)

    • %d、%x、%X、%o 表示 格式化输出进制数(八、十六、十进制)

  • System.out.printf() 的例子:

public class text {
	public static void main(String[] args) {
		System.out.printf("八进制输出:%o\n", l);
		System.out.printf("十进制输出:%d\n", l);
		System.out.printf("十六进制输出:%x\n", l);
		System.out.printf("十六进制输出:%X\n", l);
	}
}

最后,参考的测试代码

public class text8 {
	public static void main(String[] args) {
		
		System.out.println("============ long 类型的最大值输出测试 ==========");
		long x = Long.MAX_VALUE;
		String s = Long.toBinaryString(x);
		System.out.println("二进制输出:" + s);
		System.out.println("二进制 length:" + s.length());
		String s1 = Long.toOctalString(x);
		System.out.println("八进制输出:" + s1);
		System.out.println("八进制 length:" + s1.length());
		System.out.println("十进制输出:" + x);
		String s2 = Long.toHexString(x);
		System.out.println("十六进制输出:" + s2);
		System.out.println("十六进制 length:" + s2.length());
		System.out.println("\n\n");
		
		
		System.out.println("============ long 类型的最小值输出测试 ==========");
		long x1 = Long.MIN_VALUE;
		String s3 = Long.toBinaryString(x1);
		System.out.println("二进制输出:" + s3);
		System.out.println("二进制 length:" + s3.length());
		String s4 = Long.toOctalString(x1);
		System.out.println("八进制输出:" + s4);
		System.out.println("八进制 length:" + s4.length());
		System.out.println("十进制输出:" + x1);
		String s5 = Long.toHexString(x1);
		System.out.println("十六进制输出:" + s5);
		System.out.println("十六进制 length:" + s5.length());
		System.out.println("\n\n");
		
		
		System.out.println("============ long 类型的中间值输出测试 ==========");
		long x2 = 1900L;
		String s6 = Long.toBinaryString(x2);
		System.out.println("二进制输出:" + s6);
		System.out.println("二进制 length:" + s6.length());
		String s7 = Long.toOctalString(x2);
		System.out.println("八进制输出:" + s7);
		System.out.println("八进制 length:" + s7.length());
		System.out.println("十进制输出:" + x2);
		String s8 = Long.toHexString(x2);
		System.out.println("十六进制输出:" + s8);
		System.out.println("十六进制 length:" + s8.length());
		System.out.println("\n\n");
		
		
		System.out.println("============ 十进制输入: ==========");
		long l = 100;
		System.out.println("二进制输出:" + Long.toBinaryString(l));
		System.out.println("八进制输出:" + Long.toOctalString(l));
		System.out.printf("八进制输出:%o\n", l);
		System.out.println("十进制输出:" + l);
		System.out.printf("十进制输出:%d\n", l);
		System.out.println("十六进制输出:" + Long.toHexString(l));
		System.out.printf("十六进制输出:%x\n", l);
		System.out.printf("十六进制输出:%X\n", l);
		System.out.println("\n\n");
		
		
		System.out.println("============ 十六进制输入: ==========");
		long l1 = 0X64;
		System.out.println("二进制输出:" + Long.toBinaryString(l1));
		System.out.println("八进制输出:" + Long.toOctalString(l1));
		System.out.println("十进制输出:" + l1);
		System.out.println("十六进制输出:" + Long.toHexString(l1));
		System.out.println("\n\n");
		
		
		System.out.println("============ 二进制输入: ==========");
		long l2 = 0B1100100;
		System.out.println("二进制输出:" + Long.toBinaryString(l2));
		System.out.println("八进制输出:" + Long.toOctalString(l2));
		System.out.println("十进制输出:" + l2);
		System.out.println("十六进制输出:" + Long.toHexString(l2));
		System.out.println("\n\n");
		
		
		System.out.println("============ 八进制输入: ==========");
		long l3 = 0144;
		System.out.println("二进制输出:" + Long.toBinaryString(l3));
		System.out.println("八进制输出:" + Long.toOctalString(l3));
		System.out.println("十进制输出:" + l3);
		System.out.println("十六进制输出:" + Long.toHexString(l3));
		System.out.println("\n\n");
	}
}

其他的总结

  • 所有进制在输出数值时,数值的高位没有表示数值时,默认不输出,只输出有效位

  • 最高位为:0(二进制为例),表示为正数,默认,不输出 + 号

  • 最高位为:1(二进制为例),表示为负数,输出 - 号

  • 不建议用八进制输入数据,可以用其他进制,因为八进制的前缀是:0(数字 0)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十⑧

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值