`
darrenzhu
  • 浏览: 802528 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java数据类型范围的计算方式

    博客分类:
  • Java
阅读更多
java的基本数据类型有8种,byte,short,int,long,float,double,boolean,char
分为3大类:
整型byte,short,int,long,浮点型float,double,布尔型boolean,字符型char,
数据范围如下:
其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样
byte的取值范围为-128~127,占用1个字节(-2的7次方 到2的7次方 -1)
short的取值范围为-32768~32767,占用2个字节(-2的15次方 到 2的15次方 -1)
int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方 到 2的31次方 -1)
long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方  到 2的63次方 -1),

那么这个范围是怎么计算出来的呢?为什么byte的取值范围是-128到127,而不是-128到128呢?即为什么最大的正数比负数绝对值的最大值要小1呢?

知识点复习:
下面用到了补码的知识点,注意0既不是正数也不是负数,0和正数即非负数:
a)正数的补码和原码相同。
b)负数的补码等于其绝对值的原码各位取反,然后加1。
c)0的补码表示是唯一的
+0的补码=+0的反码=+0的原码=00000000
-0的补码=11111111+1=00000000
d)原码=补码的补码,已知补码求原码,计算方式跟已知原码求补码是一样的。

正是因为0的补码是唯一的,而且第一个bit是0,所以它占了符号位为0所能表达的数范围的一个位置,所以最大的正数比负数绝对值的最大值要小1。

下面我们来演算一下,为方便起见,先假设一下有一个数据类型是3位的,根据以上的描述,3位能表示的有符号数的范围为:-2的2次方 到 2的2次方 -1.

1)用3位来表示有符号数,因为符号位占掉1位,所以只剩下2位可用来表示数值;

2)不管符号位是0还是1,2位能表示的数值都是从00演化到11,即00,01,10,11,3位就是000到111,其它8位,16位以此类推,那么既然都一样,为什么最大的正数比负数绝对值的最大值要小1呢?问题就在于000表示的是非负数0,而100表示的是-4,即0占了非负数一个位置,非负数是从0开始,而负数是从-1开始,非负数和负数的个数是一样多的,都是4个(2bit->2的2次方->4),所以最小的负数是-4,最大的正数是3,枚举如下:
十进制:-4, -3, -2, -1, 0,  1,  2,  3
补码  :100,101,110,111,000,001,010,011
观察上面的补码发现,绝对值相等的非负数和负数的补码并不是对称的,即-3和3的补码不是对称的,3是011,而-3不是111,是101,真正的规律却是从00演化到11,负数符号位为1,非负数符号位为0.


4bit所表示的范围演化:
补码 十进制
0111 7
0110 6
... ...
0010 2
0001 1
0000 0
1111 −1
1110 −2
... ...
1001 −7
1000 −8

分享到:
评论

相关推荐

    Java 数据类型常见面试题总结 · .pdf

    Java 数据类型常见面试题总结 Java 数据类型是 Java 编程语言的基础,了解 Java 数据类型是 Java 开发者的必修课。Java 数据类型可以分为基本数据类型和包装类型两大类。在 Java 中,基本数据类型包括 byte、short...

    Java中数据类型和MYSQL中数据类型的对比

    Java 和 MySQL 数据类型之间的对比是理解数据库操作和应用程序开发中数据处理的关键。这两种语言的数据类型在功能和使用上都有所不同,尽管它们都用于存储和处理数据,但各自有着特定的适用场景和特点。 首先,Java...

    java 基本数据类型及基本操作.ppt

    在Java程序设计中,基本数据类型和基本操作是编程的基础。本篇将详细阐述这些关键概念。 2.1 引言 在Java中,程序是由数据和对数据进行操作的指令组成的。基本数据类型是构建程序的基础,它们包括数值、字符和布尔...

    理解java中的基本数据类型

    ### 理解Java中的基本数据类型 Java作为一种广泛使用的编程语言,在Web开发等领域占据了重要的地位。对于初学者而言,掌握Java的基本数据类型是至关重要的第一步。本文将深入探讨Java中的八种基本数据类型:`...

    Java数据类型代码.pdf

    无论是数值计算、逻辑判断还是文本处理,这些数据类型都构成了Java程序的核心部分。同时,转义字符序列是编写控制台输出和字符串处理时不可或缺的工具。通过不断实践和学习,开发者能够更好地利用这些特性来构建复杂...

    JAVA数据类型.docx

    在Java中,数据类型系统严谨且规范,帮助程序员有效地管理内存和执行计算。下面将详细阐述Java中的数据类型,包括其分类、特点以及它们在实际编程中的应用。 1、基本数据类型 Java的数据类型主要分为两大类:基本...

    Java数值类型

    Java是一种广泛使用的面向对象编程语言,它提供了丰富的数据类型来处理各种计算任务。在Java中,数据类型分为两大类:基本数据类型和引用数据类型。其中,基本数据类型又进一步分为数值类型、字符型和布尔型。 ####...

    java 的基本数据类型

    ### Java的基本数据类型 在Java编程语言中,共有八种基本数据类型,这些类型可以直接用于程序设计而无需通过引用操作。下面将详细介绍这八种基本数据类型:`byte`、`short`、`int`、`long`、`float`、`double`、`...

    java数据类型和表达式

    ### Java 数据类型与表达式知识点解析 #### 一、选择题知识点详解 1. **Java标识符规则** - **合法的Java标识符**: 标识符必须以字母、美元符号 `$` 或下划线 `_` 开始,后面可以跟任何字母、数字、美元符号或...

    Java数据类型

    Java数据类型是编程语言的基础,它是Java程序中用于存储数据的结构。理解并熟练掌握Java的数据类型至关重要,因为它们决定了变量可以存储何种类型的值以及占用内存的大小。Java分为两大类数据类型:基本数据类型和...

    Java中8中基本数据类型

    ### Java中的八种基本数据类型 Java是一种广泛使用的面向对象编程语言,它具有简单、面向对象、健壮、安全、独立于平台、可移植、解释型、高性能、多线程和动态等特点。Java语言提供了八种基本数据类型,用于表示...

    java基本数据类型练习题.pdf

    在这个Java基本数据类型练习题中,我们看到一系列关于Java编程基础的问题,包括数据类型、运算符、控制流、变量以及方法等核心概念。 1. 8位无符号二进制数最大能表示的十进制数是255,因为无符号二进制数的最高位...

    Java基本数据类型介绍

    本篇文章将详细介绍Java中的基本数据类型,包括它们的分类、大小、范围以及使用示例。 1. 整型数据类型: - byte:占用1个字节(8位),存储的数值范围是-128到127,适用于节省内存空间的场景。 - short:占用2个...

    JAVA数据类型

    Java提供了两种主要的数据类型:基本数据类型和引用数据类型。 基本数据类型涵盖了数值类型、字符类型和布尔类型,它们在内存中占有固定大小的空间,并且值在程序运行过程中不可更改(除非再次赋值)。下面是各类...

    Java的数据类型Java的数据类型

    ### Java的数据类型详解 #### 一、概述 Java是一种强类型语言,这意味着在Java中,所有的变量都必须明确地指定其类型。Java提供了多种数据类型,可以满足不同的编程需求。根据数据类型的特性,我们可以将其分为两...

    Java之基本数据类型 Sizeof 大小

    在Java编程语言中,了解基本数据类型的大小是至关重要的,因为这直接影响到程序的内存管理和性能。`Sizeof` 在Java中并不存在,与C++等语言不同,Java没有提供直接计算对象或变量在内存中占用字节数的内置方法。然而...

    JAVA基础数据类型

    总的来说,理解Java的基础数据类型是编写高效、正确代码的关键,它们是程序设计的基石,决定了变量的存储方式和行为。开发者应根据实际需求,合理选择和使用这些数据类型,以确保程序的性能和准确性。

    java数据类型.txt

    ### Java 数据类型详解 #### 一、概述 Java 作为一种广泛使用的编程语言,在软件开发领域占据着极其重要的地位。Java 的设计目标之一是提供一种既简单又强大的数据类型系统,以便开发者能够高效地管理和处理各种...

    JAVA数据类型转换.doc

    以下是对Java数据类型转换的详细说明: 1. **简单类型与封装器类** Java提供了两种主要的数据类型:简单类型(Primitive)和引用类型(Reference)。简单类型包括boolean、byte、char、short、int、long、float和...

    java数据类型、变量、数组.pdf

    Java是一种强类型语言,这意味着在编写Java代码时,必须为每个变量指定其数据类型,并且在操作中,数据类型的兼容性会受到严格的检查。这种特性增强了Java的安全性和健壮性,因为编译器会在编译阶段检测并报告类型不...

Global site tag (gtag.js) - Google Analytics