java基本数据类型长度详解
来源:互联网 发布:淘宝金牌卖家有假货吗 编辑:程序博客网 时间:2024/05/22 08:14
java基本数据类型
基础知识
参考资料:http://www.cnblogs.com/zhangziqiu/archive/2011/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;//00000001 Byte b2 = -1;//按位取反+1:00000001 -> 11111110 -> 11111111 System.out.println(b1);//00000000-00000000-00000000-00000001 System.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-00000001 System.out.println((int)b2 & 0xff);//00000000-00000000-00000000-11111111 }
- java基本数据类型长度详解
- JAVA 基本数据类型长度
- JAVA 基本数据类型长度
- JAVA 基本数据类型长度
- JAVA基本数据类型长度
- JAVA 基本数据类型长度
- JAVA 基本数据类型长度
- JAVA 基本数据类型长度
- JAVA 基本数据类型长度
- 【Java】基本数据类型长度
- JAVA 基本数据类型长度
- JAVA 基本数据类型长度
- JAVA 基本数据类型长度
- JAVA 基本数据类型长度
- JAVA 基本数据类型长度
- java基本数据类型长度
- C++/JAVA基本数据类型长度
- java中的基本数据类型长度
- Windows下搭建React Native环境与Android Studio集成
- Xcode各种iOS版本模拟器的安装使用
- 获取当前iframe的id
- BeautifulSoup解析页面造成信息丢失的解决办法
- scala学习(十五)——trait运行时装配
- java基本数据类型长度详解
- Json学习笔记
- 理解CGI、FastCGI、PHP-CGI、PHP-FPM
- __ATTRIBUTE__ 你知多少?
- 禁用ckeditor的编辑功能
- synchronized同步问题 Integer
- 编译Lua语言到 imx283平台并动态加载so库
- Java Web后台入门实战(二)-YuaneQi Sharing
- fLayer遮罩层组件 V1.0.1