一尘不染

Java 整数最大值

java

在C中,整数(对于32位计算机)为32位,范围为-32,768至+32,767。在Java中,整数(long)也是32位,但范围为-2,147,483,648至+2,147,483,647。

我不了解Java中的范围有何不同,即使位数相同。有人可以解释吗?


阅读 2228

收藏
2020-03-12

共1个答案

一尘不染

在C语言中,语言本身无法确定某些数据类型的表示形式。它因机器而异,在嵌入式系统上int可以为16位宽,尽管通常为32位。

唯一的要求是short int<= int<= long int大小。另外,有一项建议int应代表处理器的本机容量。

所有类型均已签名。该unsigned修改器允许你使用最高位的值(否则它被保留为符号位)的一部分。

这是可能的数据类型的可能值的简要表:

          width                     minimum                         maximum
signed    8 bit                        -128                            +127
signed   16 bit                     -32 768                         +32 767
signed   32 bit              -2 147 483 648                  +2 147 483 647
signed   64 bit  -9 223 372 036 854 775 808      +9 223 372 036 854 775 807
unsigned  8 bit                           0                            +255
unsigned 16 bit                           0                         +65 535
unsigned 32 bit                           0                  +4 294 967 295
unsigned 64 bit                           0     +18 446 744 073 709 551 615

在Java语言规范确定的数据类型的表示。

顺序为:byte8位,short16位,int32位,long64位。所有这些类型都是带符号的,没有未签名的版本。但是,位操作将数字视为无符号的(即,正确处理所有位)。

字符数据类型char为16位宽,无符号,并使用UTF-16编码保存字符(但是,可以分配一个char表示无效字符代码点的任意无符号16位整数)

          width                     minimum                         maximum

SIGNED
byte:     8 bit                        -128                            +127
short:   16 bit                     -32 768                         +32 767
int:     32 bit              -2 147 483 648                  +2 147 483 647
long:    64 bit  -9 223 372 036 854 775 808      +9 223 372 036 854 775 807

UNSIGNED
char     16 bit                           0        
2020-03-12