Fortran Coder

查看: 1846|回复: 3
打印 上一主题 下一主题

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

[复制链接]

31

帖子

10

主题

0

精华

熟手

F 币
334 元
贡献
128 点
跳转到指定楼层
楼主
发表于 2023-4-4 08:02:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
32位机器最大整型为 4 个字节,是否意味着使用 open(fid, access= 'stream') 的读取方法无法操作大于 4 GB 的文件?
因为 position 无法指定大于 2^{32} 字节以外的位置。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

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

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 币
334 元
贡献
128 点
板凳
 楼主| 发表于 2023-4-4 17:39:39 | 只看该作者
vvt 发表于 2023-4-4 08:20
可以用 integer(8) 呀。
32位机器(和32位编译器),只是其内存地址是32位的,寻址空间只有2^32,并不意味 ...

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

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

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

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, 2024-4-27 17:20

Powered by Tencent X3.4

© 2013-2024 Tencent

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