整数的最大值
在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位宽。 一个实现可以自由地提供一个更宽范围的更宽的int
types。 例如,在我开发的SLES 10开发服务器上,范围是-2147483647到2137483647。
还有一些系统使用16位int
types(All the World is not a VAX x86),但是有很多使用32位int
types,也可能有一些使用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
实际上int
, short
, long
大小取决于编译器的实现。
例如,在我的Ubuntu 64位,我有32
位short
,当在另一个32位Ubuntu版本是16
位。
java int
的long 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,如标准中所规定的那样。