`

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。

 

数值是以补码表示的。 

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

 



 

关于原码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,如果进行反复计算将会导致非常大的误差。

  • 大小: 345 KB
分享到:
评论

相关推荐

    二进制图文详解

    二进制图文详解 二进制Binary 2进制 逢二进一的计数规则。 在计算机内部,一切数据都是2进制的!! 2进制的数字 补码 补码本质是一种解决负数问题的算法。 1. 将数据的一半当做负数使用。 2. 补码在内存中是2...

    利用Java读取二进制文件实例详解

    主要给大家介绍了利用Java读取二进制文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用java具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

    java数据类型与二进制详细介绍

    主要介绍了java数据类型与二进制详细介绍的相关资料,这里对数据类型进行了一一介绍分析,并说明自动转换和强制转换,需要的朋友可以参考下

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-042-Java基本语法-二进制到十六进制数的转换.avi 北京动力节点-Java编程零基础教程-043-Java基本语法-八进制、十六进制转换为十进制数.avi 北京动力节点-Java编程零基础教程-044...

    基于javascript处理二进制图片流过程详解

    但是今天发现jquery的ajax不支持二进制,只能搞纯文本 于是百度之后手动实现这一功能 function getBinary(url, args, success) { var xmlhttp = new XMLHttpRequest(); var data = eval(args); var i = ...

    java二进制运算基础知识点详解

    在本文里小编给大家分享了关于java二进制运算基础知识点以及实例代码内容,需要的朋友们参考学习下。

    Java Base64编码方法详解及实例分析

    我们提供了一个完整的Java示例代码,演示了如何使用该方法对二进制数据进行Base64编码。通过本文的学习,你应该能够理解Base64编码的基本概念,以及如何在Java中使用Base64.encodeBase64String方法进行编码操作。 ...

    java常用类解析及示例及一些工具类源代码

    主要讲解了System类、Object类、Arrays类、Cloneable接口、IO系统输入输出类及装饰类、IO系统文本读写工具类、IO系统二进制读写工具类、对象序列化工具类、File类及文件搜索工具类、java异常机制及自定义异常类、...

    java基础案例与开发详解案例源码全

    3.2.2 普及二进制36 3.2.3 进制间转换37 3.2.4 基本数据类型间转换38 3.2.5 数据类型应用实例38 3.2.6 引用数据类型39 3.3 关键字.标识符.常量39 3.3.1 变量命名规范39 3.3.2 经验之谈-常见错误的分析与处理40 ...

    详解大端模式和小端模式

    关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。

    BinaryTest.java

    java二进制操作运算符 ">>> ~ & | ^" 详解,代码内有详细案例和注释说明 保证一看就懂

    java堆栈的区别 -- 详解

    5、程序代码区—存放函数体的二进制代码。 二、例子程序 这是一个前辈写的,非常详细 //main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() { int b; 栈 char s[] = "abc"; 栈 char *p2;...

    Java反射、动态代理详解.pdf

    (1)通过类的全限定名来获取定义此类的二进制字节流 (2)将这个类字节流代表的静态存储结构转为方法区的运行时数据结构 (3)在堆中生成一个代表此类的java.lang.Class对象,作为访问方法区这些数据结构的入口。

    java 流操作对文件的分割和合并的实例详解

    主要介绍了java 流操作对文件的分割和合并的实例详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下

    java虚拟机详解.docx

    当虚拟机装载类文件的时候,它解析其中的二进制数据所包含的类信息,并把它们放到方法域中;当程序运行的时候,JVM把程序初始化的所有对象置于堆上;而每个线程创建的时候,都会拥有自己的程序计数器和 Java栈,其中...

    Java运算符介绍.pptx.pptx

    Java运算符分类 Java运算符主要分为四类:算术运算符、关系运算符、逻辑运算符和位运算符,这些运算符...位运算符主要用于处理二进制数据,包括与、或、非、异或和移位等操作,它们可以实现对数据的快速处理和转换。

    java jdk8 学习笔记

    而C/C++语言将代码编译成01码,不同的操作系统的01码指令不同,这造成了不能跨平台,而Java将这个任务交给JVM,不同操作系统上的JVM将.class文件编译成不同的二进制码。 9.java se development 8uN ,其中N是JDK更新...

    Java BigDecimal详解_动力节点Java学院整理

    他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,例如银行...

    运行java的class文件方法详解

    主要详细介绍了运行java的class文件方法的相关资料,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics