`

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
分享到:
评论

相关推荐

    java的二进制操作

    ### Java的二进制操作 在Java编程语言中,对二进制文件的操作是非常常见的需求之一,尤其是在处理图像、音频等非文本数据时。Java的标准库`java.io`提供了丰富的API来支持这些操作,其中`OutputStream`及其子类是...

    java读取二进制文件

    ### Java读取二进制文件知识点详解 #### 一、二进制文件基本概念 在计算机科学中,二进制文件是由一系列字节组成的文件,这些字节可以表示任何类型的数据,包括文本、图像、音频等。二进制文件与文本文件的主要区别...

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

    "Java读取二进制文件实例详解" 本文主要介绍了利用Java读取二进制文件的相关知识点,通过示例代码详细介绍了读取二进制文件的实现方法,对大家的学习或者使用Java具有一定的参考学习价值。 一、Java读取二进制文件...

    汉字十六进制和二进制转换

    通过上述分析可以看出,给定的Java代码示例有效地实现了汉字从二进制到十六进制的转换,以及从十六进制回到二进制的逆过程。这对于理解字符编码、数据表示和转换等概念非常有帮助。同时,这些方法也可以应用于更广泛...

    SFTP工具,二进制传输

    **SFTP工具与二进制传输详解** SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,它基于SSH(Secure Shell)协议,用于在不同网络之间安全地传输文件。SFTP不仅提供文件传输功能,还确保了数据的...

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

    Java 数据类型与二进制详细介绍 Java 数据类型是 Java 语言的基础,它们决定了变量的类型和占用内存的大小。在 Java 中,基本数据类型可以分为四类:整数类型、小数(浮点数)类型、布尔类型和字符类型。 整数类型...

    JAVA实用进制转换

    Java作为一种广泛使用的编程语言,提供了多种内置的方法来实现不同进制之间的转换,比如从十进制转换到二进制、八进制或十六进制,以及反向转换。 #### 二、Java中的进制转换方法 ##### 1. 十进制转其他进制 Java...

    汉字转换二进制小工具

    《汉字转换二进制小工具详解》 在数字化的信息时代,数据的表示和处理成为日常工作中不可或缺的一部分。其中,二进制作为计算机的基础语言,扮演着至关重要的角色。本文将详细解析一款名为“汉字转换二进制小工具”...

    java随机生成十六进制颜色

    ### Java随机生成十六进制颜色知识点详解 #### 一、十六进制颜色代码的基本概念 在Web开发中,颜色常以十六进制形式表示。一个完整的十六进制颜色代码由六个字符组成,其中前两个字符表示红色(Red)的强度,中间...

    msgpack工具库二进制格式序列化反序列化

    在Java开发中,msgpack工具库提供了对这种二进制序列化和反序列化的支持,尤其适用于大数据处理、网络通信以及分布式系统中的数据交换。 **序列化与反序列化** 序列化是将对象转换为可存储或可传输的形式的过程,...

    Tomcat二进制版本安装

    ### Tomcat二进制版本安装知识点详解 #### Tomcat基础信息 Tomcat是Apache软件基金会下属的Jakarta项目中的一个开源的轻量级Web应用服务器,主要用于部署和运行基于Java的Web应用程序。它支持最新的Servlet和Java...

    Java字符串转成二进制码的方法

    Java 字符串转换二进制码方法详解 Java 字符串转换二进制码方法是 Java 语言中的一种常见操作,通过本文,我们将详细介绍 Java 字符串转换二进制码的方法,并提供相应的代码实现。 一、字符串转换二进制码 在 ...

    java中的进制转化 解决

    ### Java中的进制转换知识点详解 #### 一、引言 在Java开发过程中,进制转换是一项基础且实用的功能,特别是在处理与数字相关的算法题目时更是如此。无论是笔试还是面试,掌握进制转换的方法都是非常重要的。本文...

    Java-C语言进制转换+输出格式

    ### Java-C语言进制转换与输出格式详解 #### 一、进制转换基本概念 在计算机科学中,数据表示和处理通常涉及到不同的数值系统或进制。常见的进制包括二进制、八进制、十进制和十六进制。进制转换是在这些不同的...

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

    Java二进制运算基础知识点详解是Java编程语言中的一些基本概念,它们是理解Java编程语言的基础。下面是对Java二进制运算基础知识点的详细解释。 一、位运算 位运算是Java语言中的一种基本操作,它可以对二进制数...

    MySql于Java数据类型对应列表

    ### MySQL与Java数据类型对应详解 #### 概述 在进行数据库操作时,尤其是在使用Java进行MySQL数据库开发的过程中,正确地映射数据类型是至关重要的一步。本文将详细介绍MySQL中的各种数据类型及其在Java中的对应...

    OpenJDK 二进制安装

    **OpenJDK 二进制安装详解** OpenJDK(Open Source Java Development Kit)是Java开发工具包的一个开源实现,它提供了运行Java应用程序所需的编译器、类库和运行时环境。OpenJDK 18是Java SE的一个新版本,带来了...

    字符串与二进制的相互转化.pdf

    本篇文章基于一个Java类`StrBinaryTurn`,该类提供了几个方法来实现字符串与二进制之间的转换。这些方法包括: 1. `StrToBool`: 将Unicode字符串转换为布尔型数组。 2. `BoolToStr`: 将布尔型数组转换回Unicode字符...

Global site tag (gtag.js) - Google Analytics