Fortran Coder

查看: 1140|回复: 3

[文件读写] 32位机器大文件IO

[复制链接]

31

帖子

10

主题

0

精华

熟手

F 币
333 元
贡献
128 点
发表于 2023-4-4 08:02:55 | 显示全部楼层 |阅读模式
32位机器最大整型为 4 个字节,是否意味着使用 open(fid, access= 'stream') 的读取方法无法操作大于 4 GB 的文件?
因为 position 无法指定大于 2^{32} 字节以外的位置。

953

帖子

0

主题

0

精华

大师

F 币
180 元
贡献
73 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
发表于 2023-4-4 08:20:47 | 显示全部楼层
本帖最后由 vvt 于 2023-4-4 08:22 编辑

可以用 integer(8) 呀。
32位机器(和32位编译器),只是其内存地址是32位的,寻址空间只有2^32,并不意味着不能使用64位的整数进行计算。

31

帖子

10

主题

0

精华

熟手

F 币
333 元
贡献
128 点
 楼主| 发表于 2023-4-4 17:39:39 | 显示全部楼层
vvt 发表于 2023-4-4 08:20
可以用 integer(8) 呀。
32位机器(和32位编译器),只是其内存地址是32位的,寻址空间只有2^32,并不意味 ...

我还以为 32 位的最大只支持 4 字节的整型呢。
计算机位数和变量字节数没什么关系是啊?

953

帖子

0

主题

0

精华

大师

F 币
180 元
贡献
73 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
发表于 2023-4-5 10:54:02 | 显示全部楼层
本帖最后由 vvt 于 2023-4-5 10:58 编辑
愤怒的三炮 发表于 2023-4-4 17:39
我还以为 32 位的最大只支持 4 字节的整型呢。
计算机位数和变量字节数没什么关系是啊? ...

有关系,但不是简单的关系。
因为CPU架构繁多,不能总结出统一的规律。也没有特意遵循什么规律。

主流的32位架构,一般都会扩展有64位整数的指令集。例如 MMX 指令集之类的,我也不是很懂。
至少 x86 架构用长整型(64位)是没有问题的。所以基于x86的编译器也支持这些数据类型。
具体你使用的架构,编译器,支持哪些类型的整型,你可以看他们的说明书。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2023-12-8 01:15

Powered by Tencent X3.4

© 2013-2023 Tencent

快速回复 返回顶部 返回列表