整数的最大值
在 C 中,整数(对于 32 位计算机)为 32 位,范围从 -32,768 到 +32,767。在Java中,整数(long)也是32位,但范围从-2,147,483,648到+2,147,483,647。
我不明白Java中的范围有何不同,即使位数相同。有人能解释一下吗?
在 C 中,整数(对于 32 位计算机)为 32 位,范围从 -32,768 到 +32,767。在Java中,整数(long)也是32位,但范围从-2,147,483,648到+2,147,483,647。
我不明白Java中的范围有何不同,即使位数相同。有人能解释一下吗?
在C中,语言本身并不能确定某些数据类型的表示形式。它可以因机器而异,在嵌入式系统上,它可以是16位宽,尽管通常是32位。int
唯一的要求是按大小<= <=。此外,还有一个建议,即 int
应表示处理器的本机容量。short int
int
long 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 中,Java 语言规范确定数据类型的表示形式。
顺序是:8位,16位,32位,64位。所有这些类型都是有符号的,没有无符号的版本。但是,位操作将数字视为无符号(即,正确处理所有位)。byte
short
int
long
字符数据类型为 16 位宽,无符号,并使用 UTF-16 编码保存字符(但是,可以分配表示无效字符代码点的任意无符号 16 位整数)char
char
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
在 C 中,整数(对于 32 位计算机)为 32 位,范围从 -32768 到 +32767。
错。2 的补码表示中的 32 位有符号整数的范围为 -231 到 231-1,等于 -2,147,483,648 到 2,147,483,647。