`

彻底理解byte,double,float变量范围

JDK 
阅读更多
在这里我们只谈论 java中的数值类型
首先说byte:
这段是摘自jdk中 Byte.java中的源代码:

/** * A constant holding the minimum value a <code>byte</code> can * have, -2<sup>7</sup>. */ public static final byte MIN_VALUE = -128; /** * A constant holding the maximum value a <code>byte</code> can * have, 2<sup>7</sup>-1. */ 
public static final byte MAX_VALUE = 127;


从这里可以看出 byte的取值范围:-128 --- 127;

从计算机组成原理的角度可以解释:byte在计算机中是占8个字节的 而且byte 是有符号整形 用二进制表示时候最高位为符号位 0代表正数 1代表负数。
最大值:127      0111 1111 即2的7次方减去1;
最小值:-128 这个数字曾经困扰我很久, 要知道正数在计算机中是以原码形式存在的
负数在计算机中是以其补码形式存在的那么一个负数的补码是怎么计算的呢? 就是负数的绝对值的原码转为二进制再按位取反后加1,下边这个10和-10为例来介绍的 :10原码:0000 1010   它在计算机中的存储就是 0000 1010, 那么-10呢? 按照前面说的 算除其绝对值为10,转为二进制 0000 1010 按位取反 1111 0101 再加1后:1111 0110,此为-10补码 ,好的,计算机中的1111 0110就是代表-10了

我们来看 -128  绝对值128的二进制表示:1000 0000 按位取反 0111 1111 加1后:1000 0000,也就是说 -128在计算机中的表示就是 1000 0000 了, 再来看一下-129 在计算机中的表示,绝对值129的范围已经超出了了byte的位数。

再有还可以通过

System.out.println(Byte.MAX_VALUE); //最大值 System.out.println(Byte.MIN_VALUE); //最小值

输出Byte的最大值和最小值。

综上所述 byte的取值范围只能是:-128 -- 127了  即 负的2的7次方到2的7次方减去1。

相应的 short 作为16位有符号整形,int作为32位有符号整形,  long 作为64位有符号整形 都可以如上计算出 取值范围

char作为16位无符号整形
其范围为 0 -- 2的15次方 这无可争议

摘自 Character.java中的源代码:


/** * The constant value of this field is the smallest value of type * <code>char</code>, <code>'\u0000'</code>. * * @since 1.0.2 */ public static final char MIN_VALUE = '\u0000'; /** * The constant value of this field is the largest value of type * <code>char</code>, <code>'\uFFFF'</code>. * * @since 1.0.2 */ 
public static final char MAX_VALUE = '\uffff';


float作为32位的浮点型:
摘自Float.java源码:

/** * A constant holding the largest positive finite value of type * <code>float</code>, (2-2<sup>-23</sup>)·2<sup>127</sup>. * It is equal to the hexadecimal floating-point literal * <code>0x1.fffffeP 127f</code> and also equal to * <code>Float.intBitsToFloat(0x7f7fffff)</code>. */ 
public static final float MAX_VALUE = 3.4028235e 38f; // 0x1.fffffeP 127f 
/** * A constant holding the smallest positive nonzero value of type * <code>float</code>, 2<sup>-149</sup>. It is equal to the * hexadecimal floating-point literal <code>0x0.000002P-126f</code> * and also equal to <code>Float.intBitsToFloat(0x1)</code>. */
public static final float MIN_VALUE = 1.4e-45f; // 0x0.000002P-126f



double 作为64为浮点型

Double.java源码:

/** * A constant holding the largest positive finite value of type * <code>double</code>, * (2-2<sup>-52</sup>)·2<sup>1023</sup>. It is equal to * the hexadecimal floating-point literal * <code>0x1.fffffffffffffP 1023</code> and also equal to * <code>Double.longBitsToDouble(0x7fefffffffffffffL)</code>. */ 
public static final double MAX_VALUE = 1.7976931348623157e 308; // 0x1.fffffffffffffP 1023 
/** * A constant holding the smallest positive nonzero value of type * <code>double</code>, 2<sup>-1074</sup>. It is equal to the * hexadecimal floating-point literal * <code>0x0.0000000000001P-1022</code> and also equal to * <code>Double.longBitsToDouble(0x1L)</code>. */
public static final double MIN_VALUE = 4.9e-324; // 0x0.0000000000001P-1022
分享到:
评论

相关推荐

    4BYTE转换成float型代码

    在计算机科学中,数据通常以二进制形式存储,其中浮点数(如float和double)是用于表示小数的常见类型。浮点数在内存中的表示方式遵循特定的标准,如IEEE 754。当你从一个4字节的数据块(通常代表一个32位整数)转换...

    c#数据类型转换,BYTE,float,double,char类型间的转换方法.docx

    本文将详细探讨C#中的数据类型转换,特别是关于BYTE, float, double和char之间的转换方法。 首先,我们要理解C#中的基本数据类型和它们的别名。例如,`int`实际上是`System.Int32`的别名,`float`是`System.Single`...

    java基本类型与byte数组互相转换

    在Java编程语言中,基本类型的变量(如`short`、`int`、`long`、`char`、`double`和`float`)和`byte`数组之间的相互转换是一项非常实用的技术,尤其是在网络通信、文件读写等场景下。下面将详细介绍如何进行这些...

    S1-使用Java语言理解程序逻辑-第二章变量、数据类型和运算符

    基本数据类型包括整型(如`byte`, `short`, `int`, `long`)、浮点型(`float`, `double`)、字符型(`char`)和布尔型(`boolean`)。引用数据类型则包括类(class)、接口(interface)和数组,它们指向对象的内存...

    Example01.ino

    这个项目是李小瓜在学习arduino的第一个实践项目,本来想通过完成这个项目实现arduino入门,但往往现实是自己后来没有去实现它,这个项目投入时间和资金都不少,怪自己没有坚持到最后,最近整理一下,希望能和一起...

    java 常量与变量

    - **基本数据类型** 包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 - **引用数据类型** 包括类、接口和数组,它们都是对象的引用,而不是对象本身。 ### ...

    JAVA程序设计课件-变量的类型转换.pptx

    例如,一个byte类型的变量与另一个byte类型的变量相加时,它们在计算过程中都会被提升为int类型,即使结果仍然在byte的范围内,也必须通过强制类型转换才能将其赋值回byte类型。 了解这些基本概念对于编写有效的...

    LongInt Float Double与字节数组的转换.rar

    在给定的压缩包文件中,重点讲述了`LongInt`、`Float`和`Double`这三种数值类型与字节数组之间的转换。这里我们将详细讨论这些转换的过程以及其在实际应用中的意义。 首先,`LongInt`是表示32位整数的数据类型,...

    Test_int_to_float.rar_float

    2. **隐式转换**:当`int`值赋给`float`变量时,Java会自动进行隐式转换,但同样可能导致精度损失: ```java int intValue = 10; float floatValue = intValue; // 隐式转换 ``` 3. **浮点数运算**:在进行`...

    Java中的基本类型和引用类型变量的区别

    基本类型是 Java 中的八种基本类型,包括 byte、short、int、long、float、double、char 和 boolean。这些类型的变量直接存储值,例如 int a = 250;这里的 a 变量直接存储整数 250。 引用类型是一种对象类型,包括...

    C语言变量名命名规则

    - `byte(BYTE)` 类型的变量以 `by` 开头,如 `byFlag`。 - `short(int)` 类型的变量以 `n` 开头,如 `nStepCount`。 - `long(LONG)` 类型的变量以 `l` 开头,如 `lSum`。 - `char(CHAR)` 类型的变量以 `c` 开头...

    浅谈Java中的变量.pdf

    基本类型包括byte、short、int、long(整型),float、double(浮点型),char(字符型)和boolean(布尔型)。这些类型的变量直接存储其值,占用固定大小的内存空间。引用类型则包括类、接口、数组等,它们的值实际...

    Java开发零基础篇:Day02 变量和运算符.pdf

    Java中有八种基本数据类型:byte、short、int、long、float、double、char和boolean。每种类型的变量都有其特定的定义和赋值方式。例如,可以定义byte类型的变量并赋值为1,short类型的变量赋值为2,以此类推。注意...

    JAVA程序设计课件-变量的数据类型.pptx

    在赋值时,float类型变量的数值后面需要加“F”或“f”,double类型可以加“D”或“d”,也可以不加。浮点数可以表示带有小数的数值,如科学记数法E表示的指数形式。 另外,字符类型变量(char)在JAVA中用单个英文...

    C#数据类型与变量

    【C#数据类型与变量】是编程学习中的基础部分,主要涵盖了C#语言中用于存储数据的不同类别以及如何声明和...通过这样的实验,可以直观地理解不同类型数据的存储需求和取值范围,有助于在实际编程中合理选择和使用变量。

    java变量讲解

    - **8大基本数据类型**: `byte`, `short`, `int`, `long`, `float`, `double`, `char`, `boolean` - **引用数据类型**: - 类 (`class`) - 接口 (`interface`) - 数组 (`[]`) - 字符串 (`String`) - **注意事项...

    Java中的成员变量

    - 浮点型(float, double):0.0f, 0.0d - 字符型(char):'\u0000' (空字符) - 布尔型(boolean):false - 引用类型(对象):null 如果需要在创建对象时给实例变量赋予特定的初始值,可以使用构造器或实例初始...

    java中基本数据类型的取值范围

    Java 语言中有两种浮点数类型:float 和 double。其中 float 是单精度型,占用 32 位内存空间,而 double 是双精度型,占用 64 位内存空间。 * Float:32 位单精度浮点数,根据 IEEE754-1985 标准。 * Double:64 ...

    day02_变量、运算符.pdf

    变量可理解为内存中的小容器,它们用于存储各种类型的数据。这些数据可以是整数、小数、字符或者字符串等。理解变量的定义、使用规则以及计算机内存的存储机制对于编程至关重要。 1. **变量概述** 变量是一种动态...

    MathDemo.bmp

    //定义一个byte类型的变量 short largestShort=Short.MAX_VALUE;//定义一个short类型的变量 int largestInteger=Integer.MAX_VALUE;//定义一个int类型的变量 long largestLong=Long.MAX_VALUE;//定义一个long...

Global site tag (gtag.js) - Google Analytics