900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java基本数据类型长度详解

java基本数据类型长度详解

时间:2020-12-30 13:21:21

相关推荐

java基本数据类型长度详解

java基本数据类型

基础知识

参考资料:/zhangziqiu/archive//03/30/ComputerCode.html

机器数和真值

机器数

一个数在计算机中的二进制表示形式,叫做这个数的机器数

机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1

例如:

dec +3 = bit 00000011

dec -3 = bit 10000011

真值

将带符号位的机器数对应的真正数值称为机器数的真值

例如:

bit 00000011 真值 bit + 0000011 真值 dec +3(最高位代表符号位)

bit 10000011 真值 bit - 0000011 真值 dec -3(最高位代表符号位)

源码,返码,补码

机器存储一个具体数字的编码方式

源码

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值

例如:

dec +3 源码 bit 00000011 = bit +|0000011| = bit 00000011 = +|3| = dec +3

dec -3 源码 bit 10000011 = bit -|0000011| = bit 10000011 = -|3| = dec -3

反码

正数的反码是其本身

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反

例如:

dec -3 源码 bit 10000011 符号位布标 bit -0000011 取反 bit -1111100 = bit 11111100

补码

负数以补码的形式存储在计算机中

正数的补码就是其本身

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

计算规则: 第一步取x的绝对值,第二步计算x的二进制,第三步对二进制取反,最后在加1

例如:

dec -3 源码 bit 10000011 符号位不变 bit -0000011 取反 bit - 1111100 +1 = bit 11111101

dec -3 = |dec -3| = dec 3 = bit 00000011 取反 bit 11111100 +1 bit 11111101

Java基础数据类型字节数

1 bit (一个字节) : 0/1 二进制数据

1 byte = 8 bit

1 Byte = 1 byte = 8 bit

1 Short = 2 byte = 16 bit

1 Integer = 4 byte = 32 bit

1 Long = 8 byte = 64 bit

1 Character = 2 byte = 16 bit

1 Float = 4 byte = 32 bit

1 Double = 8 byte = 64 bit

Boolean = false(没有)

基础数据类型范围

byte

byte:-128 ~ 127 = [10000000 ~ 00000001]

-128: |128| = bit 10000000 = bit 01111111 = bit 1000000

127: bit 011111111

Short

Short:

[0x8000 ~ 0x7fff] = [-215 ~ 215] = [-32768 ~ 32767]

[1000000000000000 ~ 111111111111111]

Integer

Integer:

[0x80000000 ~ 0x7fffffff] = [-2^31 ~ 2^31] = [-2147483648 ~ 2147483647] = 21亿

[10000000000000000000000000000000 ~ 1111111111111111111111111111111]

Long

[0x8000000000000000L ~ 0x7fffffffffffffffL] = [-263 ~ 263]

[-9223372036854775808 ~ 9,223,372,036,854,775,807] = 10^18

Character

‘\u0000’ ~ ‘\uffff’

常见操作

byte转换成int

&0xff

原因:

public static void main(String[] args) {Byte b1 = 1;//00000001Byte b2 = -1;//按位取反+1:00000001 -> 11111110 -> 11111111System.out.println(b1);//00000000-00000000-00000000-00000001System.out.println(b2);//11111111-11111111-11111111-11111111// 因为byte只有8位,转换int,只保留8位,所以与上 0xff[00000000-00000000-00000000-11111111]// 保留了后8位System.out.println((int)b1 & 0xff);//00000000-00000000-00000000-00000001System.out.println((int)b2 & 0xff);//00000000-00000000-00000000-11111111}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。