本文正在参加「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