开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 712|回复: 16
打印 上一主题 下一主题
收起左侧

[易语言纯源码] 分享几个有意思的源码:read_uint64、int64

[复制链接]
结帖率:100% (8/8)
跳转到指定楼层
楼主
发表于 前天 09:42 | 只看该作者 回帖奖励 |正序浏览 |阅读模式   云南省昆明市
分享源码
界面截图: -
是否带模块: -
备注说明: -
  
子程序名返回值类型公开备 注
read_uint64_str文本型 读取无符号整数64为十进制字符串
变量名类 型静态数组备 注
局_字节集字节集 
高32长整数型 
低32长整数型 
结果文本型 
局_字节集 = read_bytes (8)
如果 (局_字节集 ≠ {  })
' 取高32位
高32 = 取字节集数据 (局_字节集, #字节型, 1) × 16777216 + 取字节集数据 (局_字节集, #字节型, 2) × 65536 + 取字节集数据 (局_字节集, #字节型, 3) × 256 + 取字节集数据 (局_字节集, #字节型, 4)
' 取低32位
低32 = 取字节集数据 (局_字节集, #字节型, 5) × 16777216 + 取字节集数据 (局_字节集, #字节型, 6) × 65536 + 取字节集数据 (局_字节集, #字节型, 7) × 256 + 取字节集数据 (局_字节集, #字节型, 8)
' 由于易语言长整数型最大2^63-1,2^32以内的乘法和加法不会溢出
结果 = 文本_大数乘法 (到文本 (高32), “4294967296”)  ' 2^32
结果 = 文本_大数加法 (结果, 到文本 (低32))
返回 (结果)
返回 (“0”)

  
子程序名返回值类型公开备 注
read_int64_str文本型 读取有符号整数64为十进制字符串
变量名类 型静态数组备 注
局_字节集字节集 
高32长整数型 
低32长整数型 
结果文本型 
局_字节集 = read_bytes (8)
如果 (局_字节集 ≠ {  })
' 取高32位
高32 = 取字节集数据 (局_字节集, #字节型, 1) × 16777216 + 取字节集数据 (局_字节集, #字节型, 2) × 65536 + 取字节集数据 (局_字节集, #字节型, 3) × 256 + 取字节集数据 (局_字节集, #字节型, 4)
' 取低32位
低32 = 取字节集数据 (局_字节集, #字节型, 5) × 16777216 + 取字节集数据 (局_字节集, #字节型, 6) × 65536 + 取字节集数据 (局_字节集, #字节型, 7) × 256 + 取字节集数据 (局_字节集, #字节型, 8)
' 结果 = 高32 * 2^32 + 低32
结果 = 文本_大数加法 (文本_大数乘法 (到文本 (高32), “4294967296”), 到文本 (低32))
' 判断符号位
如果真 (取字节集数据 (局_字节集, #字节型, 1) ≥ 128)
' 负数,做补码还原
结果 = 文本_大数减法 (结果, “18446744073709551616”)  ' 2^64
结果 = “-” + 结果
返回 (结果)
返回 (“0”)

  
子程序名返回值类型公开备 注
文本_大数加法文本型 
参数名类 型参考可空数组备 注
a文本型
b文本型
变量名类 型静态数组备 注
i整数型 
进位整数型 
结果文本型 
位和整数型 
a = 文本_颠倒 (a, )
b = 文本_颠倒 (b, )
如果 (取文本长度 (a)取文本长度 (b))
a = a + 取重复文本 (取文本长度 (b)取文本长度 (a), “0”)
b = b + 取重复文本 (取文本长度 (a)取文本长度 (b), “0”)
进位 = 0
结果 = “”
计次循环首 (取文本长度 (a), i)
位和 = 到整数 (取文本中间 (a, i, 1)) + 到整数 (取文本中间 (b, i, 1)) + 进位
结果 = 到文本 (位和 % 10) + 结果
进位 = 位和 ÷ 10
计次循环尾 ()
如果真 (进位 > 0)
结果 = 到文本 (进位) + 结果
返回 (文本_去左边零 (结果))
子程序名返回值类型公开备 注
文本_大数减法文本型 
参数名类 型参考可空数组备 注
a文本型
b文本型
变量名类 型静态数组备 注
i整数型 
借位整数型 
结果文本型 
位差整数型 
a = 文本_颠倒 (a, )
b = 文本_颠倒 (b, )
如果 (取文本长度 (a)取文本长度 (b))
a = a + 取重复文本 (取文本长度 (b)取文本长度 (a), “0”)
b = b + 取重复文本 (取文本长度 (a)取文本长度 (b), “0”)
借位 = 0
结果 = “”
计次循环首 (取文本长度 (a), i)
位差 = 到整数 (取文本中间 (a, i, 1)) - 到整数 (取文本中间 (b, i, 1)) - 借位
如果 (位差 < 0)
位差 = 位差 + 10
借位 = 1
借位 = 0
结果 = 到文本 (位差) + 结果
计次循环尾 ()
返回 (文本_去左边零 (结果))
子程序名返回值类型公开备 注
文本_大数乘法文本型 
参数名类 型参考可空数组备 注
a文本型
b文本型
变量名类 型静态数组备 注
i整数型 
j整数型 
结果文本型 
临时文本型 
进位整数型 
乘积整数型 
结果 = “0”
计次循环首 (取文本长度 (b), i)
临时 = “”
进位 = 0
计次循环首 (取文本长度 (a), j)
乘积 = 到整数 (取文本中间 (a, 取文本长度 (a) - j + 1, 1)) × 到整数 (取文本中间 (b, 取文本长度 (b) - i + 1, 1)) + 进位
临时 = 到文本 (乘积 % 10) + 临时
进位 = 乘积 ÷ 10
计次循环尾 ()
如果真 (进位 > 0)
临时 = 到文本 (进位) + 临时
临时 = 临时 + 取重复文本 (i - 1, “0”)
结果 = 文本_大数加法 (结果, 临时)
计次循环尾 ()
返回 (文本_去左边零 (结果))
子程序名返回值类型公开备 注
文本_去左边零文本型 
参数名类 型参考可空数组备 注
输入文本文本型
变量名类 型静态数组备 注
i整数型 
i = 1
判断循环首 (i ≤ 取文本长度 (输入文本) 取文本中间 (输入文本, i, 1)“0”)
i = i + 1
判断循环尾 ()
如果 (i > 取文本长度 (输入文本))
返回 (“0”)
返回 (取文本右边 (输入文本, 取文本长度 (输入文本) - i + 1))

评分

参与人数 1精币 +1 收起 理由
kyo9766 + 1 感谢分享,很给力!~

查看全部评分


结帖率:95% (99/104)

签到天数: 9 天

17
发表于 1 小时前 | 只看该作者   辽宁省沈阳市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:97% (120/124)

签到天数: 13 天

16
发表于 3 小时前 | 只看该作者   山东省青岛市
全都是大佬~
回复 支持 反对

使用道具 举报

结帖率:91% (62/68)

签到天数: 13 天

15
发表于 3 小时前 | 只看该作者   山东省青岛市
已经顶贴,感谢您对论坛的支持!
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)

签到天数: 10 天

14
 楼主| 发表于 7 小时前 | 只看该作者   云南省昆明市
tian89 发表于 2025-7-11 23:35
好像都是很巧合我也在研究这个大数的问题看你代码没少用AI因为我就是问过他好几十遍出来的结果和你的大相径 ...

哈哈蛤大佬 能否分享学习一下 确实问ai了哈哈哈 因为我要read_uint64、int64 但是易语言只支持32位 所以用这种比较笨的办法  大数减法确实逻辑确实有问题 个位数时候没有高位可借位哈哈哈哈
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 10 天

13
发表于 昨天 21:55 | 只看该作者   河南省郑州市
666666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 8 天

12
发表于 昨天 12:59 | 只看该作者   江苏省连云港市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 10 天

11
发表于 昨天 10:09 | 只看该作者   山东省青岛市
学习一下大数计算,感谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)

签到天数: 12 天

10
发表于 昨天 09:16 | 只看该作者   广西壮族自治区玉林市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 12 天

9
发表于 昨天 08:42 | 只看该作者   山东省淄博市
感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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