题目:展示用十六进制和八进制计数法来操作Long值,用long.toBinaryString()来显示结果。
Java中十六进制八进制的表示方法同c语言相同,十六进制以0x开头,八进制以0开头,注意这里都是——零。
public class test3_8 {
public static void main(String[] args){
long sixteen1 = 0x4f;
long sixteen2 = 0x40;
long sum = sixteen1 + sixteen2;
System.out.println("两个十六数相加和的二进制为:" + Long.toBinaryString(sum));
long eight1 = 07;
long eight2 = 011;
sum = eight1+eight2;
System.out.println("两个八进制数相加的和的二进制为: " + Long.toBinaryString(sum));
}
}
控制台输出:
两个十六数相加和的二进制为:10001111
两个八进制数相加的和的二进制为: 10000
这里toBinaryString()并不是String的特有方法,Integer和long都有这个方法,内部实现略有不同。不过查看源码发现,他们开始会根据各自基本数据类型的长度做出相应计算,最终调用的是Sting下的同一个方法,所以这个方法名最后跟着String。
练习(9)题目:分别显示用float和double指数计数法所能表示的最大和最小的数字。
我们知道所有包装类都有一个MAX_VALUE和MIN_VALUE,这两个值分别代表该类所能表示的最大值和最小值,float和double还多出了用指数计数法表示最大值和最小值。
public class Test95 {
public static void main(String[] args){
System.out.println("byte类型的最大值为: " + Byte.MAX_VALUE);
System.out.println("byte类型的最小值为: " + Byte.MIN_VALUE);
System.out.println("short类型的最大值为: " + Short.MAX_VALUE);
System.out.println("short类型的最小值为: " + Short.MIN_VALUE);
System.out.println("int类型的最大值为: " + Integer.MAX_VALUE);
System.out.println("int类型的最小值为: " + Integer.MIN_VALUE);
System.out.println("long类型的最大值为: " + Long.MAX_VALUE);
System.out.println("long类型的最小值为: " + Long.MIN_VALUE);
System.out.println("float类型的最大值为: " + Float.MAX_VALUE);
System.out.println("float类型的最小值为: " + Float.MIN_VALUE);
System.out.println("float类型最大致的最大指数为: " + Float.MAX_EXPONENT);
System.out.println("float类型最小值的最小指数为: " + Float.MIN_EXPONENT);
System.out.println("float类型的最小无参常数值为: " + Float.MIN_NORMAL);
System.out.println("double类型的最小值为: " + Double.MIN_VALUE);
System.out.println("double类型的最大值为: " + Double.MAX_VALUE);
System.out.println("double类型最大值的最大指数为: " +Double.MAX_EXPONENT);
System.out.println("double类型最小值的最小指数为: " + Double.MIN_EXPONENT);
System.out.println("double类型的最小无参常数值为: " + Double.MIN_NORMAL);
}
}
控制台输出:
byte类型的最大值为: 127
byte类型的最小值为: -128
short类型的最大值为: 32767
short类型的最小值为: -32768
int类型的最大值为: 2147483647
int类型的最小值为: -2147483648
long类型的最大值为: 9223372036854775807
long类型的最小值为: -9223372036854775808
float类型的最大值为: 3.4028235E38
float类型的最小值为: 1.4E-45
float类型最大致的最大指数为: 127
float类型最小值的最小指数为: -126
float类型的最小有参常数值为: 1.17549435E-38
double类型的最小值为: 4.9E-324
double类型的最大值为: 1.7976931348623157E308
double类型最大值的最大指数为: 1023
double类型最小值的最小指数为: -1022
double类型的最小有参常数值为: 2.2250738585072014E-308
注意到这里float和double还有一个MIN_NORMAL值,似乎比MIN_VALUE要大一点,它们之间有什么区别呢?
我们看一下源码:
MIN_VALUE = 0x0.0000000000001P-1022;
MIN_NORMAL = 0x1.0p-1022;
注意到MIN_NORMAL在小数点前面有一个1,这是Java的规定的标准之一。
以上。