java的二进制_java基本类型二进制详解

public static void main( String[] args )

{

// byte

System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);

System.out.println("包装类:java.lang.Byte");

System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);

System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);

System.out.println();

// short

System.out.println("基本类型:short 二进制位数:" + Short.SIZE);

System.out.println("包装类:java.lang.Short");

System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);

System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);

System.out.println();

// int

System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);

System.out.println("包装类:java.lang.Integer");

System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);

System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);

System.out.println();

// long

System.out.println("基本类型:long 二进制位数:" + Long.SIZE);

System.out.println("包装类:java.lang.Long");

System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);

System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);

System.out.println();

// float

System.out.println("基本类型:float 二进制位数:" + Float.SIZE);

System.out.println("包装类:java.lang.Float");

System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);

System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);

System.out.println();

// double

System.out.println("基本类型:double 二进制位数:" + Double.SIZE);

System.out.println("包装类:java.lang.Double");

System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);

System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);

System.out.println();

// char

System.out.println("基本类型:char 二进制位数:" + Character.SIZE);

System.out.println("包装类:java.lang.Character");

// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台

System.out.println("最小值:Character.MIN_VALUE="

+ (int) Character.MIN_VALUE);

// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台

System.out.println("最大值:Character.MAX_VALUE="

+ (int) Character.MAX_VALUE);

基本类型:byte 二进制位数:8

包装类:java.lang.Byte

最小值:Byte.MIN_VALUE=-128

最大值:Byte.MAX_VALUE=127

基本类型:short 二进制位数:16

包装类:java.lang.Short

最小值:Short.MIN_VALUE=-32768

最大值:Short.MAX_VALUE=32767

基本类型:int 二进制位数:32

包装类:java.lang.Integer

最小值:Integer.MIN_VALUE=-2147483648

最大值:Integer.MAX_VALUE=2147483647

基本类型:long 二进制位数:64

包装类:java.lang.Long

最小值:Long.MIN_VALUE=-9223372036854775808

最大值:Long.MAX_VALUE=9223372036854775807

基本类型:float 二进制位数:32

包装类:java.lang.Float

最小值:Float.MIN_VALUE=1.4E-45

最大值:Float.MAX_VALUE=3.4028235E38

基本类型:double 二进制位数:64

包装类:java.lang.Double

最小值:Double.MIN_VALUE=4.9E-324

最大值:Double.MAX_VALUE=1.7976931348623157E308

基本类型:char 二进制位数:16

包装类:java.lang.Character

最小值:Character.MIN_VALUE=0

最大值:Character.MAX_VALUE=65535

======================================================================

整数二进制

补码:

符号位是0(正数)他的补码就是本身。

符号位是1(负数)保持符号位不变,其余各位取反然后加一。

例如:

-7的二进制表示         -->1 0000111

符号位不变             -->1 0000111

其余各位取反然后加一   -->1 1111001

计算机加减法是基于补码完成计算的,减法也转换成加法计算。

8-7的二进制计算为:

0 0001000

+1 1111001

11 0000001

最高位溢出去掉,结果是1。

正数的原、反、补码都是它自己。

负数的原码最高位是1,即代表负;

反码就是后七位按位取反;

补码就是反码加1。

数据在内存中始终是以二进制形式存放的。

系统在表示一个字符型数据时,并不是将字符本身的形状存入内存,而只是将字符的ASCII码存入内存。

在内存中所有的数据又是以二进制的形式存放的。所以上面的例子中'x'和'y'在内存中的表示如下:

'x'、'y'的ASCII码为120、121。而120、121的二进制形式为1111000、1111001。

所以'a'、'b'在内存中的表示为 1111000、1111001。

数值是以补码表示的。

数值是以补码的方式参与运算,所以数值在内存中以补码的方式表示。

7f8f82a9e2154df1c6ac3e1699ec74b7.png

关于原码1000 0000,表示的是-0,还是-128呢?(答案是-128而不是-0)

看看原码的概念吧:正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值

0是负数吗?0既不是正数也不是负数,那么它的符号位到底是0还是1呢?(0的符号位为0,不能为1)

看看负数补码的公式:负数的补码=10000 0000(模)-数的绝对值

浮点类型二进制

float的组成是:1位符号位+8位指数(q)+23位底数(b),其解释出来的形式是b^q,由于指数q是8位有符号整数,范围是-128~127,23位的底数(无符号)最大值是2^23,算上指数的话最大可以表示到2^23^127。

由于float类型是一个幂计算式,所以很多时候并不能表达一个精确值,例如0.9,0.9在内存中无法用二进制准确表示,所以1-0.9为0.100000024,如果进行反复计算将会导致非常大的误差。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值