大家都知道,在TC2中int的长度为2个字节(16位),无符号的话最大可达到2的16次方即65536,long型占4个字节,最大数可达2的32次方,即4294967296,可是JAVA的int相当于TC的long型,而long却占8个字节,即2的64次方,我就不明白了,不是我们现在的CPU都是32位的吗?所谓32位也就是CPU所能处理的二进制位数呀?为什么JAVA的long型可以达到2的64次方呢?我想问一下表示数的大小完全取决于CPU吗?跟软件有关吗?再说TC是80年代的产物,那个时候也应该是16位的CPU呀?可是为什么能表示2的32次方的数?本人计算机原理学得不是太好,请大家不要笑我!

解决方案 »

  1.   

    在c和c++中,int表示的整型与平台相关的。16位的8086机器上int占2字节,在32位的sun Sparc机器上,int占4字节;到inter的时候,就跟操作系统有关系了,dos和windows3.1中int占2字节,当windows使用32位模式时int占4字节。java中所有的数值类型所占字节的数量跟平台无关。呵呵··在core java上看到的····
      

  2.   

    这个问题我不能完全说清楚,但表示数的大小并非完全取决于CPU。例如,在C的标准中,int的最小长度是2个字节,但编译器的开发者可以根据需要将int的长度设定为4个字节。再如,java中规定了int的长度是4个字节,是由软件决定的,而不是由cpu决定的。不知道这样理解对不对。
      

  3.   

    不是由CPU决定的,而是决定于编译器给该类型数据分配多大的空间!
      

  4.   

    还是不懂,我想问一下486的CPU是多少位的?我只知道WIN95是32位的"操作系统",dos622/win32是16位的,可是486的电脑我们也还是可以跑WIN95的,难道16位的CPU也能跑32位的操作系统?还有就是到底什么是"字长"?书上说是CPU能处理的二进制的位数,可是我们的CPU恐怕目前还都是32位的吧?为什么JAVA可以处理8个字节(也就是8*8=64位)的数据呢?请高人开导!
      

  5.   

    JVM里面的指令支持64位的操作。
    你就这么想:JVM模拟了64位计算机