32位系统和64位系统的区别

zhaowenqiang_120 2012-08-28 02:20:31
32位系统和64位系统的区别。
如何在32位系统中 unsigned int是32位,而64位系统中 unsigned int是64位?
...全文
3332 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeakeven008 2012-08-28
  • 打赏
  • 举报
回复
2^64次方,正解
竞天问 2012-08-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

1.64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存
2.64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。
名词解释:什么是64位处理器
之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数。8位处理器、1……
[/Quote]

16GB?

至于int多长还是稍微用一下sizeof或者<numeric>吧
mymtom 2012-08-28
  • 打赏
  • 举报
回复
64位架构有各种模型,
最常见的是
LP64(short 16, int 32, long 64, long long 64, pointer 64), 比如大多数Unix;
但是微软的Windows使用
LLP64(short 16, int 32, long 32, long long 64, pointer 64)
当然还有极少数的系统使用
ILP64(short 16, int 64, long 64, long long 64, pointer 64)

SILP64(short 64, int 64, long 64, long long 64, pointer 64)
ArdourCareful 2012-08-28
  • 打赏
  • 举报
回复
回帖是一种美德...
yisikaipu 2012-08-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]如果是16bit,那unsigned int岂不是跟unsigned short表示的数值大小相同了,16bit最大才能表示为65535,unsigned int由32bit表示是系统的规定。在上述回复中我已经说明了其优点,对于某种约定俗成的规定解释的多了也就成了废话。[/Quote]

C++没有规定int多少字节

C++只是规定了short不大于int,int不大于long。但是没有规定不能等于

其实也就是允许 unsigned short 与 unsigned int 同义

约定俗成的规定是什么?现在的64位编译器 int 都是4字节!
yisikaipu 2012-08-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]int类型为C/C++最基本的数据类型,其本质上是对应CPU中ALU单元的处理字宽,所以32位系统中int就是32位的,64位系统中int就是64位的,另外有些编译器可能会作特殊的比如兼容性处理,这样64位系统中int也有可能会是32位的。[/Quote]

现在到底有哪个64位编译器的int是8字节的呢?

只有sizeof(void*)等于8倒是统一的 正如#6楼所言
xingfeng2510 2012-08-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:

注意: c/c++标准并没有规定sizeof(unsigned int)是多少哦。


为何在32系统中,unsigned int就是32bit呢,而不是16bit呢?
[/Quote]

如果是16bit,那unsigned int岂不是跟unsigned short表示的数值大小相同了,16bit最大才能表示为65535,unsigned int由32bit表示是系统的规定。在上述回复中我已经说明了其优点,对于某种约定俗成的规定解释的多了也就成了废话。
图灵狗 2012-08-28
  • 打赏
  • 举报
回复
int类型为C/C++最基本的数据类型,其本质上是对应CPU中ALU单元的处理字宽,所以32位系统中int就是32位的,64位系统中int就是64位的,另外有些编译器可能会作特殊的比如兼容性处理,这样64位系统中int也有可能会是32位的。
冻结 2012-08-28
  • 打赏
  • 举报
回复
最明显的不是int的大小,是指针大小的变化,32位系统指针是32位,64位系统指针是64位。
其它,int 都是32位,short 都是16位,
long 32位系统为32位,64位系统为64位。
还有,size_t ssize_t 32位系统为32位,64位系统为64位。
以上是Linux的数据。
zhaowenqiang_120 2012-08-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

注意: c/c++标准并没有规定sizeof(unsigned int)是多少哦。
[/Quote]

为何在32系统中,unsigned int就是32bit呢,而不是16bit呢?
mujiok2003 2012-08-28
  • 打赏
  • 举报
回复
注意: c/c++标准并没有规定sizeof(unsigned int)是多少哦。
mujiok2003 2012-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据。

学过计算机组成原理的都知道32处理器具有32根数据线,一个存取周期可以通过这32根数据线读取32bit的数据(每根传输1bit),也就是4字节,同理在64位处理器在一个存取周期能够处理8字节数据。
unsigned int在64位系统中使用8个字节表示,表示的数值范围0~2……
[/Quote]

good.

8/32/64位系统一般只CPU的字长(word size)。 字长决定了CPU寄存器,数据总线的位宽。 一般的,字长越大, 计算资源越多,速度也就越快。

8/32/64位操作系统/软件是另一回事。 比如32为操作系统/软件是指为在32为的处理器设计的os/software, 一般可以运行在32或64为的处理器上,但不能在8位的处理器上运行。
whucv 2012-08-28
  • 打赏
  • 举报
回复
1.64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存
2.64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。
名词解释:什么是64位处理器
之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数。8位处理器、16位处理器、32位处理器和64位处理器,其计数都是2的倍数。一次处理的数据越大,该电脑处理信息的能力越来越大;因此64位处理在先天就比32位处理器具有快速的能力。那为什么不用更高级的128位处理器呢?因为位数越高,处理器芯片的设计也就越复杂,目前的技术水平暂时无法制造这么复杂的芯片。
xingfeng2510 2012-08-28
  • 打赏
  • 举报
回复
所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据。

学过计算机组成原理的都知道32处理器具有32根数据线,一个存取周期可以通过这32根数据线读取32bit的数据(每根传输1bit),也就是4字节,同理在64位处理器在一个存取周期能够处理8字节数据。
unsigned int在64位系统中使用8个字节表示,表示的数值范围0~2^64-1,也就是说64位系统较32位系统能够表示更大的数值,unsigned int在64位系统中占用8个字节的好处:一是方便存取,二是能够表示更大数值范围。

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧