24小时热门版块排行榜    

Znn3bq.jpeg
查看: 3058  |  回复: 7

pgi1706

木虫 (小有名气)

[求助] fortran中最大整数问题 已有2人参与

我想输出2**32这个数,但不论是32位编译器,还是64位编译器,总是输不出来。于是我采用下面的输出方法:
Program Main
       integer a
       integer*8 b,c,d
       write(*,*) huge(b)     !huge(b)=9223372036854775807
       a=2**30      
       write(*,*) a               !a=1073741824
       c=2**31                   !  c=-2147483648
       write(*,*) abs(c)        !abs(c)=2147483648
       d=huge(b)/(abs(c))  
       write(*,*) d, d+1                ! d=4294967295
       End
最终d+1就是2**32,能不能不需要通过huge(b)这个函数迂回输出2**32,直接输出不行吗?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangybcn

禁虫 (正式写手)

本帖内容被屏蔽

2楼2014-05-21 18:58:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiangxingge

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★
pgi1706: 金币+4, ★★★★★最佳答案, 可行 2014-05-29 21:50:20
通常 的 整形常数 是 integer,其最大值 只有2**31-1
但是 你可以 这样写
integer*8 b,c,d
b=2
c=32
d=b**c
write(*,*) d
3楼2014-05-23 13:25:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色

【答案】应助回帖


pgi1706: 金币+1, 谢谢提供建议 2014-05-29 21:50:45
三楼的方法应该不行吧。。。。。。。。。。。fortran的整形只有kind=2 或 4两种,不能选8的

这类问题属于经典的  大整数  问题。。。。。。。。。。。。。。在c语言里都需要用链表来处理的吧,反正必须借助外部技巧性的函数来处理,估计fortran也一样。。。。。。。楼主可以搜搜  大整数问题 的解决方案
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
4楼2014-05-23 13:42:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiangxingge

金虫 (正式写手)

引用回帖:
4楼: Originally posted by baobiao007 at 2014-05-23 13:42:09
三楼的方法应该不行吧。。。。。。。。。。。fortran的整形只有kind=2 或 4两种,不能选8的

这类问题属于经典的  大整数  问题。。。。。。。。。。。。。。在c语言里都需要用链表来处理的吧,反正必须借助外部技 ...

通常 的 32位操作系统 不支持 integer*8,但是 新的 64位 可以支持。我看楼主的 程序 中 用了 ,说明 他的环境是支持的。
5楼2014-05-23 13:50:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pgi1706

木虫 (小有名气)

真是奇怪了,我如果直接写成d=2**32,输出来d=0
如果按二楼写成
integer*8 b,c,d
b=2
c=32
d=b**c    或者写成d=2**c
其结果都能正确输出d
谢谢二楼,也谢谢大家!
6楼2014-05-29 21:49:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiangxingge

金虫 (正式写手)

引用回帖:
6楼: Originally posted by pgi1706 at 2014-05-29 21:49:46
真是奇怪了,我如果直接写成d=2**32,输出来d=0
如果按二楼写成
integer*8 b,c,d
b=2
c=32
d=b**c    或者写成d=2**c
其结果都能正确输出d
谢谢二楼,也谢谢大家!

这涉及到 FOTRAN 表达式的 一个基本规则,就是 计算结果的 类型 是根据 参与计算 的 变量类型 来决定的。
写成 2,32  它的类型 是 Integer*4,有些早期 的 系统 甚至 是 integer*2。
2**32 就是 两个 int*4计算,结果 放到 int*4里面 去 ,溢出了。再赋值到 int*8里面 去 ,白搭了。
写成 2**c 或者 b**c ,或者 b**32 ,由于 参与计算的变量 有 至少一个 int*8,结果就是 int*8,再赋值到 int*8,OK!
7楼2014-07-11 13:54:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qchem

铁杆木虫 (著名写手)


直接常数后加上种别参数就可以了,如
2_8
表示种别参数为8的整数2

[ 发自小木虫客户端 ]
8楼2014-07-12 07:09:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 pgi1706 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 化学070300 求调剂 +29 哈哈哈^_^ 2026-04-12 29/1450 2026-04-18 15:56 by Equinoxhua
[考研] 260求调剂 +4 Zyt1314520.. 2026-04-17 5/250 2026-04-18 08:28 by babysonlkd
[考研] 求调剂 +9 小聂爱学习 2026-04-16 11/550 2026-04-17 22:34 by chixmc
[考研] 一志愿华中农业071010,320求调剂 +17 困困困困坤坤 2026-04-14 19/950 2026-04-17 20:08 by 关一盏灯cd
[考博] 求博导|生物质基多孔碳/超级电容方向,已有相关成果,寻能源材料/碳材料方向老师 +3 猪猪人Zzz 2026-04-12 3/150 2026-04-17 19:10 by 阳阳阳^_^
[考研] 335求调剂 +20 想上岸呀!! 2026-04-12 23/1150 2026-04-17 10:50 by cuisz
[论文投稿] 有没有接收比较快的sci期刊呀,最好在一个月之内的,研三孩子求毕业 20+4 之护着 2026-04-16 5/250 2026-04-17 10:02 by bobvan
[考研] 材料相关专业344求调剂双非工科学校或课题组 +23 hualkop 2026-04-12 25/1250 2026-04-16 22:12 by SUSE_CL
[考研] 297,工科调剂?河南农业大学本科 +14 河南农业大学-能 2026-04-14 14/700 2026-04-16 14:41 by dingyanbo1
[基金申请] RY:中国产出的科学垃圾论文,绝对数量和比例都世界第一 +7 zju2000 2026-04-14 18/900 2026-04-16 11:36 by 欢乐颂叶蓁
[考研] 279学硕食品专业求调剂院校 20+7 孤独的狼爱吃羊 2026-04-12 29/1450 2026-04-16 09:00 by screening
[考研] 求调剂学校 +14 不会吃肉 2026-04-13 16/800 2026-04-15 21:59 by noqvsozv
[考研] 0854调剂 +13 长弓傲 2026-04-12 16/800 2026-04-15 13:45 by fenglj492
[考研] 各位老师好,求调剂,本科211,一志愿天津大学生物与医药学硕,差两名录取。 +11 路六六jjj 2026-04-13 11/550 2026-04-14 16:01 by zs92450
[考研] 105500药学求调剂 +4 x_skys 2026-04-12 4/200 2026-04-14 13:37 by rndfc
[考研] 食品与营养(0955)271求调剂 +15 升格阿达 2026-04-12 16/800 2026-04-14 13:18 by 浮若_安生
[考研] 245求调剂 +6 冰糖橘?汽水 2026-04-13 10/500 2026-04-14 10:49 by jyl0317
[考研] 考研英一数一338分 +9 长江大学东校区 2026-04-13 10/500 2026-04-14 00:41 by 王珺璞
[考研] 一志愿浙大生物325分求调剂 +9 zysheng 2026-04-12 9/450 2026-04-12 22:31 by yuyin1233
[考研] 346分,工科0854求调剂,专硕 +6 moser233 2026-04-12 7/350 2026-04-12 22:11 by fqwang
信息提示
请填处理意见