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;//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}

java基本数据类型长度详解相关推荐

  1. java基本数据类型所占长度_java基本数据类型长度详解

    java基本数据类型 基础知识 机器数和真值 机器数 一个数在计算机中的二进制表示形式,叫做这个数的机器数 机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1 例如: dec ...

  2. Java引用数据类型String详解

    Java引用数据类型(String) 引用数据类型概述 引用数据类型与基本数据类型的差别(举例说明) 引用数据类型概述 说到引用数据类型,那么何为引用数据类型? 引用类型,都可以用null值作为值,也 ...

  3. Redis五种基本数据类型底层详解(原理篇)

    Redis五种基本数据类型底层详解 详细介绍Redis用到的数据结构 简单动态字符串 SDS和C字符串的区别 总结 链表 字典 哈希表 字典 哈希算法 解决键冲突 rehash(重点) 渐进式reha ...

  4. 【Redis】数据类型的详解与使用场景【原创】

    文章目录 Redis数据类型的详解与使用场景 1-1 NoSQL的概述 1. 概述 2. 为什么需要NoSQL 3. NoSQL产品 4. 分类 5. 特点 2-1 Redis的概述 1. 概述 2. ...

  5. Java单元测试之JUnit4详解

    2019独角兽企业重金招聘Python工程师标准>>> Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @B ...

  6. java定时任务框架elasticjob详解

    这篇文章主要介绍了java定时任务框架elasticjob详解,Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架.该项目基于成熟的开源产品Quartz和Zo ...

  7. Java基础学习总结(24)——Java单元测试之JUnit4详解

    Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @BeforeClass 全局只会执行一次,而且是第一个运行 @Before  ...

  8. java 8 新功能详解_Java 8的8个新功能

    java 8 新功能详解 注意:确保还检查了我们的详细教程Java 8 Features – ULTIMATE Guide . Jdk 1.8(又名Java 8)今天发布,这意味着它的通用发布版本已经 ...

  9. JAVA的StringBuffer类详解

    JAVA的StringBuffer类详解 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer ...

最新文章

  1. 7个问题,直击管理的本质
  2. C# http post 地址
  3. 减肥登Cell封面上热搜:华东师大热疗探索新突破,这一波网友们想象力大开
  4. azkaban工作流调度器及相关工具对比
  5. 百度地图与HT for Web结合的GIS网络拓扑应用
  6. SSM中实现CRUD并配置输出sql语句
  7. java实现下载压缩文件_java实现文件压缩下载----压缩下载zip
  8. android开发(50) Android透明状态栏。适用于 4.4 以上及 5.0以上设备
  9. Web前端技术历经的洗礼和蜕变
  10. lvm讲解与磁盘挂载问题排除
  11. pytorch可视化
  12. python链表的实例_python数据结构链表之单向链表(实例讲解)
  13. postman下载使用教程
  14. Maya2018基础(二)展UV
  15. Error: The method ‘DioHttpHeaders.add‘ has fewer named arguments than those of overridden method
  16. 验证下《指数基金投资指南》中的策略是否有效
  17. Express Session的使用
  18. 微信小程序自带地图_微信小程序之地图使用
  19. 网络直播课程:神马是敏捷?(直播时间:2014-7-14 20:00-21:00)
  20. Cisco路由器重置enable密码步骤

热门文章

  1. 如何自学游戏引擎的开发
  2. linux mdadm 创建raid,Linux下用mdadm命令创建软raid5
  3. android最新面试题及答案,分享两道阿里P7究极难度算法题
  4. 本科计算机自学路径,计算机自学考试本科有哪些选择,区别在哪?
  5. 旅行社建立电商系统需要哪些功能?
  6. opencv C++ SVM模型训练与分类实现
  7. Intellij IDEA 默认打开上次项目设置
  8. 51nod 1414 冰雕(思维+暴力)
  9. openEuler 20.03 LTS SP1发行版本DRBD初体验
  10. 从 0 到 1000+ 台服务器监控的构建之路。