字长
我们目前的PC字长都是32位的吧?
那么各种基本数据类型的取值范围是多少呢?
问题点数:40、回复次数:11Top
1 楼xboy(无薇不至)回复于 2002-03-22 20:27:22 得分 5
也有号称64位的机器哦。
~~~~~~
所谓32位是指从cpu出来的地址线是是32根!
地址线越多,他的寻址空间越大,也就支持更大内存哦!
如果你想深入研究那你看看计算机组成原理之类的书哦!
Top
2 楼wishbetter(木木木)回复于 2002-03-22 20:35:06 得分 0
你有听说不同字长的机器的“int”范围不同吗?
我没有听过,所以我认为都一样的,不会随着机器的不同而不一样(我的意见)
如果真的有变化,我很想知道:)Top
3 楼xboy(无薇不至)回复于 2002-03-22 20:38:28 得分 5
还有一点,数据的取值范围可以通过软件来改变!!!Top
4 楼chenggl(小石)回复于 2002-03-22 20:52:21 得分 5
好像与编译器有关Top
5 楼efanl(传说中的一凡……)回复于 2002-03-22 21:12:11 得分 5
short int是16位的,long int是32位的,char是8位的
VC下int默认是long int
TC下int默认是shortTop
6 楼Wind_LQ(风)回复于 2002-03-22 21:42:03 得分 5
的确是与编译器有关的。
如果是32位编译器,则int是32位的,long和int是等价,short则是int的一半也就是16位
如果是16位编译器,则int是16位的,short就只有8位。
这个你可以用VC和TC试一下Top
7 楼jishiping(JSP 季世平)回复于 2002-03-22 22:21:13 得分 5
现在的C++编译器支持 64-bit 整数,数据类型为 __int64Top
8 楼Solstice(大佛)回复于 2002-03-23 09:47:00 得分 10
机器的“字长”和地址线无关,和数据线紧密相关。
386到pentium 4的字长都是32位,都是“32位机”
而从pentium 2开始,地址线变成了36根,可以直接寻址64GB的空间。
其他非IA - 32架构的机器我没有了解,猜想在intel 的64 bits处理器itantium上,int == 64 bits。
C++标准规定short int <= int <= long int,而并没有规定具体的位数。
由于80x86的向下兼容性,386以上的机器既可以执行32 bits的程序,也可以执行16 bits的程序。
据我的经验,在PC机的16位编译器下,如TC++ 3.0
short int == int == 16 bits, long int == 32 bits
在32位编译器下,如VC++ 6.0
short int = 16 bits
int = long int = 32 bits
所谓“现在的C++编译器支持 64-bit 整数,数据类型为 __int64”也只对一两种编译器成立(VC)。在有的编译器(如g++) 下,64 bits整数是long long intTop
9 楼cyberleon(小邦)回复于 2002-03-23 11:25:09 得分 0
越来越糊涂!!!
有这方面原理的书吗?Top
10 楼nicholas_87(nicholas)回复于 2002-03-23 12:09:55 得分 0
好高深啊!!Top
11 楼mike_hao_1980(琦琦)回复于 2002-03-23 18:16:54 得分 0
solstice(大佛)说得没有错,
字长是指记算机的数据总线的长度,
我们目前的PC字长都是32位的
计算机的int型数据一般都与字长相同,
而软件有时可以模拟一些不同字长的数据的运算
这就是为什么windows可以运行以前的16位dos程序,
而java无论在什机器上int都是64位的,也是模拟出来的。
一般说来,
char型数据一般都是8位(采用ACSII格式),但在WIN2000等机器上,
由于采用的是(UNICODE)字符集,它是16位的。
float型数据一般是4个字长,double型数据8个字长;
当然,只是一般情况。Top




