整数的最大值

在C中,整数(对于32位机器)是32位,范围从-32768到+32767。 在Java中,整数也是32位,但范围从-2,147,483,648到+2,147,483,647。

我不明白Java中的范围是如何不同的,即使位数是相同的。 有人可以解释这个吗?

C中语言本身并不决定某些数据types的表示。 它可以因机器而异,在embedded式系统中, int可以是16位宽,但通常是32位。

唯一的要求是short int <= int <= long int的大小。 此外,还有一个build议int应该代表处理器的本地容量

所有types都被签名。 unsigned修饰符允许您使用最高位作为值的一部分(否则它保留为符号位)。

以下是可能的数据types的可能值的简短表格:

  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语言规范确定了数据types的表示forms。

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

字符数据typeschar是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 +65 535 

在C中,整数(对于32位机器)是32位,范围从-32768到+32767。

错误。 2的补码表示forms的32位有符号整数的范围是-2 31到-2 31 -1,等于-2,147,483,648到2,147,483,647。

一个32位的整数范围从-2,147,483,648到2,147,483,647。 但是,您在32位计算机上的事实并不意味着您的C编译器使用32位整数。

C语言定义指定了各种数据types的最小范围。 对于int ,这个最小范围是-32767到32767,这意味着一个int必须至less有 16位宽。 一个实现可以自由地提供一个更宽范围的更宽的inttypes。 例如,在我开发的SLES 10开发服务器上,范围是-2147483647到2137483647。

还有一些系统使用16位inttypes(All the World is not a VAX x86),但是有很多使用32位inttypes,也可能有一些使用64位。

C语言被devise为运行在不同的架构上。 Java被devise成在隐藏这些架构差异的虚拟机中运行。

这是因为在32位机上的C – 整数并不意味着32位被用来存储它,它也可能是16位。 这取决于机器(依赖于实现)。

海报有他们的Javatypes混合起来。 在java中,他的C in是短的:short(16位)= -32768到32767 int(32位)= -2,147,483,648到2,147,483,647

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

实际上intshortlong大小取决于编译器的实现。

例如,在我的Ubuntu 64位,我有32short ,当在另一个32位Ubuntu版本是16位。

java intlong int相当于C中的long int

编辑:如果int32_t被定义,那么它在精度方面是等价的。 long int保证了java int的精度,因为它保证至less有32位的大小。

在__int32的C范围是-2147483648到2147483647. 请参阅这里全范围。

 unsigned short 0 to 65535 signed short –32768 to 32767 unsigned long 0 to 4294967295 signed long –2147483648 to 2147483647 

如果要使用特定大小的variables,特别是在编写涉及位操作的代码时,不能保证“int”将是32位,所以应该使用“标准整型”。

在Java中

int数据types是一个32位有符号的二进制补码整数。 最小值为-2,147,483,648,最大值为2,147,483,647(含)。

在标准C中,可以使用INT_MAX作为最大的“int”值,该常量必须在“limits.h”中定义。 类似的常量是为其他types定义的( http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.5.html ),如上所述,这些常量是依赖于实现的,但是根据最小位有一个最小值对于每种types,如标准中所规定的那样。