java基本数据类型总结

1.基本数据类型

按字节分:

    byte  一个字节

 

    short 两个字节

    char 两个字节

 

    int 4个字节

    float 4个字节

 

    long 8个字节

    double 8个字节

 

    boolean 无确定大小

 

按值类型分:

    1.byte,short,int,long

    2.float,double

    3.char

    4.boolean

 

2.扩展知识点:

字节:

    一个字节(byte),等于8位(或 比特“bit”)。 每一位可代表0和1。

直接从数字表面理解,一个字节可代表的数字有 2^8个,转换为十进制为0~255。

 

问:为什么java中byte最大值为127,而不是255?

    byte的首位用作符号位,0表示整数,1表示负数。所以byte最大值为011111111,用十进制表示为127。

 

问:理论上最小值为-127,为什么实际上byte最小值为-128,-128表示什么?

这里就涉及到计算机的原码、反码、补码的相关知识了。

正数:

原码 == 反码 == 补码

就是整数的源码、反码、补码都是一样的。

负数:

    反码 == 原码的非符号位取反

    补码 == 反码 + 1

    如 -1

    原码:1000 0001

    反码:   1111 1110

    补码: 1111 1111

实际上,计算机内部是用补码来存储一个数的。

那么,为什么要用补码来存呢?

很简单,因为计算机相反数的补码相加等于零,能够正确表示计算关系。

举一个简单的例子:

1+(-1)= 0

  如果采用原码相加:

0000 0001 + 1000 0001 = 1000 0010 == -2

 这显然是不对的。

 

如果采用补码相加:

0000 0001 + 1111 1111 = 1 0000 0000  大于8为的数字被截取,所以1 0000 0000 == 0,符合实际计算关系。

那么 -128怎么来的?

因为最高位表示符号位的情况下,计算机可以表示 正零 0000 0000 与 负零 1000 0000 两个数,

而实际在数学的世界里零既不是正数也不是负数。

所以就有一个规定 1000 0000表示-128 ,多表示一个数。且可以避免与实际数学不一样的正负零歧义

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值