Integer的最大值是什么?| Java Debug 笔记

本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看<活动链接>

Integer的最大值是什么?

在C语言中,integer(对于32位机器)是32位,它的范围是-32768~+32767

在Java中,integer(long)也是32位,但范围是-2147483648~+2147483647

我不明白为何它们位数相同,但是范围大小却不一样呢?

回答一

在C语言中,语言本身并不决定某些数据类型的表示。它会因机器而不同,在嵌入式系统上,int可以是16位,尽管通常是32位。

唯一不变的是short int<=int<=long int。此外,int应该表示处理器的容量。

无符号修饰符允许您使用最高位作为值的一部分(否则它将保留给符号位)。

下面是可能的数据类型的可能值的简短表格:

          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中,Java语言规范决定了数据类型的表示。

顺序是:byte 8 bits, short 16 bits, int 32 bits, long 64 bits。所有这些类型都是有符号的,没有无符号的版本。但是,位操作将数字视为无符号(即正确处理所有位)。

字符数据类型char是16位、无符号的,并使用UTF-16编码保存字符(但是,可以为字符分配表示无效字符码点的任意无符号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                         +65 535
复制代码

文章翻译自Stack Overflow:stackoverflow.com/questions/1…

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享