JAVA是采用Unicode编码。每一个字节占8位。32位系统,每个int是 4个字节,32位。 byte是Java原始类型。byte可存储在[-128,127]范围以内的整数值。 Java中的所有整数值都是32位的int值,除非值后面有l或L(如235L),这表示该值应解释为long。 java中的int的取值范围计算思路如下:32个格子中放满0或1的方法有2的32次方种。所以有两种可能,两种推算方法: 1、将二进制最大的数字(32个1)转换成10进制,即 4294967296 2、有2的32次方种算法,那么依照10进制最大的数就是2的32次方。即4294967296。 所以java中的int的取值范围:2的31次方:+/- 2147483648 int的取值范围为: -2^31——2^31-1,即-2147483648——2147483647 1、对于正数来说,它的补码就是它本身。 2、对于负数来说,它的补码是它对应的正数的二进数所有位取反之后加一。 3、由负数的补码求原码也是相同的操作(所有位取反+1)即为该负数的绝对值 int是4个字节,32位, 10000000 00000000 00000000 00000000 是补码,第一位为符号位,1表示负数,所以 对剩下的位取反,结果为 1111111 11111111 11111111 11111111,加一后为10000000 00000000 00000000 00000000 4、所以原码指的是-2^31=-2147483648 int的取值范围为-2^31——2^31-1 unsigned int 能表示的最大值是2^32-1。至于原因,看了下面的例子就会明白: 假设一个单片机用二位二进制来表示数,很明显就是00,01,10,11这四种情况,分别表示0,1,2,3这四个数。 这就对了,原来0也占用了一种状态,总共能表示2^32种状态的16位二进制数就只能表示0~2^32-1,即 0~32767 了。 (一个盒子能存放若干个数据,但是存放个数上限都是2的倍数。现在我们要把整数放进去,整数如果只有正整数和负整数那就好办了,空间一人一半。 可偏偏整数还包含一个零。这个让强迫症患者很难接受,但是电脑系统设计师必须考虑到这一点,0不是啥都没有,人家也要占空间的。 总归是要从正整数那一边或负整数那一边匀一个空间过来,2的32次方-1相对比较简单好记,那就从正整数那边匀一个空间过来吧。)
以上均来自网上搜索整理……