简介:我们都知道,计算机中都是使用2进制进行存储的。学习好二进制,对理解计算机如何处理数据以及Java中的数据类型在计算机中如何存储,都有实质性的帮助。本课程将从二进制的历史开始讲解位值制计数法、进制转换、小数的二进制化等二进制相关知识。并由此拓展介绍了Java中的整型、浮点型以及字符型。在这里还可以看到BigInteger、BigDecimal如何使用、ASCII与unicode关系等
本章带领大家认识二进制的基本概念,发展历史,使用场景,对二进制的优缺点进行分析,对全部课程做一个介绍
本章介绍二进制与其他进制的基础——位值制计数法。以及Java中各种进制之间的转换。位运算就是直接对内存中的二进制位进行操作,讲解这种基本运算方式,体验位运算的效率
public class BinaryTest {
public static void main(String[] args) {
// 二进制
int bin = 0b1100010;
// 八进制
int oct = 0142;
// 十六进制
int hex = 0x62;
// 十进制
int dec = 98;
// 前缀是数字0,不是字母O
// 英文字母 b x 是不区分大小写的
// 在指定进制中使用规定的数码
// 底层存储都是二进制的形式
// Java默认使用十进制,输出显示都是十进制的形式
System.out.println("2:" + bin);
System.out.println("8:" + oct);
System.out.println("16:" + hex);
System.out.println("10:" + dec);
}
}
public class BinaryTest {
public static void main(String[] args) {
/*// 二进制
int bin = 0b1100010;
// 八进制
int oct = 0142;
// 十六进制
int hex = 0x62;
// 十进制
int dec = 98;
// 前缀是数字0,不是字母O
// 英文字母 b x 是不区分大小写的
// 在指定进制中使用规定的数码
// 底层存储都是二进制的形式
// Java默认使用十进制,输出显示都是十进制的形式
System.out.println("2:" + bin);
System.out.println("8:" + oct);
System.out.println("16:" + hex);
System.out.println("10:" + dec);*/
int num = 98;
/*System.out.println("2:" + Integer.toBinaryString(num));
System.out.println("8:" + Integer.toOctalString(num));
System.out.println("16:" + Integer.toHexString(num));*/
/*System.out.println("2:" + Integer.toString(num, 2));
System.out.println("8:" + Integer.toString(num, 8));
System.out.println("16:" + Integer.toString(num, 16));
//-----------------------
System.out.println("------------------");
System.out.println("5:" + Integer.toString(num, 5));
System.out.println("36:" + Integer.toString(num, 36));
System.out.println("37:" + Integer.toString(num, 37));
System.out.println("100:" + Integer.toString(num, 100));*/
System.out.println(Integer.parseInt("1100010", 2));
System.out.println(Integer.parseInt("62", 16));
System.out.println(Integer.parseInt("2q", 36));
}
}
本章介绍比特与字节的概念,对java中的 .class文件与Jvm进行了基本介绍。基本数据类型部分,主要介绍了整形和浮点型:整型的储存,多字节大小端问题、符号问题,补码问题。补码的加减移位运算;小数的二进制化,浮点数的存储原理 IEEE754。以及Java中解决两个问题:整型取值范围问题引入的BigInteger,和精度丢失问题引入的BigDecimal。此外还介绍了ASCII与unicode关系以及boolean的存储
public class BigIntegerTest {
public static void main(String[] args) {
BigInteger b1 = new BigInteger("29");
BigInteger b2 = new BigInteger("1010", 2);
BigInteger b3 = BigInteger.valueOf(33l);
System.out.println(b1.toString());
System.out.println(b2.toString());
System.out.println(b3.toString(2));
}
}
public class BigIntegerTest {
public static void main(String[] args) {
BigInteger b1 = new BigInteger("29");
BigInteger b2 = new BigInteger("1010", 2);
BigInteger b3 = BigInteger.valueOf(33l);
/*System.out.println(b1.toString());
System.out.println(b2.toString());
System.out.println(b3.toString(2));*/
BigInteger add = b1.add(b2);
BigInteger sub = b1.subtract(b2);
BigInteger mul = b1.multiply(b2);
BigInteger div = b1.divide(b2);
System.out.println(add);
System.out.println(sub);
System.out.println(mul);
System.out.println(div);
}
}
public class BigDecimalTest {
public static void main(String[] args) {
/*BigDecimal b1 = new BigDecimal("0.1");
BigDecimal b2 = new BigDecimal(0.1);
System.out.println(b1.toString());
System.out.println(b2.toString());
BigDecimal b3 = new BigDecimal(0.1 + "");
System.out.println(b3.toString());
BigDecimal bigDecimal = BigDecimal.valueOf(0.1);
System.out.println(bigDecimal);*/
BigDecimal b1, b2;
b1 = BigDecimal.valueOf(0.3);
b2 = BigDecimal.valueOf(0.1);
BigDecimal div1 = b1.divide(b2);
System.out.println(div1);
BigDecimal div2 = b2.divide(b1, new MathContext(5, RoundingMode.HALF_UP));
System.out.println(div2);
}
}
ASCII
将本课程提到的所有内容进行一个回顾与总结