|
核心库的位运算默认是整数型的,不支持长整数的位运算,使用该模块可以实现长整数的逻辑位运算。
- .版本 2
- .支持库 spec
- .程序集 长整数位运算模块
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 A, 整数型
- .局部变量 B, 整数型
- .局部变量 计数, 整数型
- ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
- 置随机数种子 ()
- .计次循环首 (10000, 计数)
- A = 取随机数 (, ) × 取随机数 (, ) × 取随机数 (, )
- B = 取随机数 (, ) × 取随机数 (, ) × 取随机数 (, )
- A = 长整数取绝对值 (A)
- B = 长整数取绝对值 (B)
- .如果真 (位与 (A, B) ≠ 长整数位与 (A, B))
- 调试输出 (A, B)
- 暂停 ()
- .如果真结束
- .如果真 (位或 (A, B) ≠ 长整数位或 (A, B))
- 暂停 ()
- .如果真结束
- .如果真 (位异或 (A, B) ≠ 长整数位异或 (A, B))
- 暂停 ()
- .如果真结束
- A = 取随机数 (, )
- B = 取随机数 (1, 16)
- .如果真 (右移 (A, B) ≠ 长整数右移 (A, B))
- 暂停 ()
- .如果真结束
- .如果真 (左移 (A, B) ≠ 长整数左移 (A, B))
- 调试输出 (A, B, 左移 (A, B), 长整数左移 (A, B))
- 暂停 ()
- .如果真结束
- .计次循环尾 ()
- .子程序 长整数取绝对值, 长整数型, 公开
- .参数 欲取其绝对值的数值, 长整数型
- .如果真 (欲取其绝对值的数值 < 0)
- 欲取其绝对值的数值 = 0 - 欲取其绝对值的数值
- .如果真结束
- 返回 (欲取其绝对值的数值)
- .子程序 长整数左移, 长整数型, 公开
- .参数 欲移动的整数, 长整数型
- .参数 欲移动的位数, 长整数型
- 返回 (欲移动的整数 × 求次方 (2, 欲移动的位数))
- .子程序 长整数右移, 长整数型, 公开
- .参数 欲移动的整数, 长整数型
- .参数 欲移动的位数, 长整数型
- 返回 (欲移动的整数 × 求次方 (0.5, 欲移动的位数))
- .子程序 二进制补64个0, 文本型
- .参数 二进制文本, 文本型
- 返回 (取重复文本 (64 - 取文本长度 (二进制文本), “0”) + 二进制文本)
- .子程序 长整数取最大值, 长整数型, 公开
- .参数 欲比较的数值A, 长整数型
- .参数 欲比较的数值B, 长整数型
- .如果真 (欲比较的数值A > 欲比较的数值B)
- 返回 (欲比较的数值A)
- .如果真结束
- 返回 (欲比较的数值B)
- .子程序 长整数取最小值, 长整数型, 公开
- .参数 欲比较的数值A, 长整数型
- .参数 欲比较的数值B, 长整数型
- .如果真 (欲比较的数值A < 欲比较的数值B)
- 返回 (欲比较的数值A)
- .如果真结束
- 返回 (欲比较的数值B)
- .子程序 进制转换, 文本型, , 不支持小数 负数
- .参数 欲转换的数字, 文本型
- .参数 转换前的进制, 字节型
- .参数 转换后的进制, 字节型
- .局部变量 数组, 字节型, , "0"
- .局部变量 计数, 整数型
- .局部变量 长度, 整数型
- .局部变量 运算值, 整数型
- .局部变量 返回值, 文本型
- 长度 = 取文本长度 (欲转换的数字)
- 重定义数组 (数组, 假, 长度)
- .计次循环首 (长度, 计数)
- 数组 [计数] = 数值转换A (取代码 (欲转换的数字, 计数))
- .计次循环尾 ()
- .判断循环首 (长度 ≥ 1)
- 运算值 = 0
- .计次循环首 (长度, 计数)
- 运算值 = 运算值 × 转换前的进制 + 数组 [计数]
- 数组 [计数] = 运算值 ÷ 转换后的进制
- 运算值 = 运算值 % 转换后的进制
- .计次循环尾 ()
- 返回值 = 字符 (数值转换B (运算值)) + 返回值
- 运算值 = 1
- .判断循环首 (运算值 ≤ 长度 且 数组 [运算值] = 0)
- 运算值 = 运算值 + 1
- .判断循环尾 ()
- 删除成员 (数组, 1, 运算值 - 1)
- 长度 = 取数组成员数 (数组)
- .判断循环尾 ()
- 返回 (返回值)
- .子程序 数值转换A, 字节型
- .参数 值, 字节型
- .判断开始 (值 ≤ 58)
- 返回 (值 - 48)
- .判断 (值 ≤ 90)
- 返回 (值 - 65 + 10)
- .默认
- 返回 (值 - 97 + 36)
- .判断结束
- .子程序 数值转换B, 字节型
- .参数 值, 字节型
- .判断开始 (值 ≤ 9)
- 返回 (值 + 48)
- .判断 (值 ≤ 35)
- 返回 (值 + 65 - 10)
- .默认
- 返回 (值 + 97 - 36)
- .判断结束
- .子程序 数值转换C, 文本型
- .参数 值, 字节型
- .如果真 (值 < 10)
- 返回 (“ ” + 到文本 (值))
- .如果真结束
- 返回 (到文本 (值))
- .子程序 文本二进制位异或, 文本型
- .参数 值A, 文本型
- .参数 值B, 文本型
- .局部变量 计数, 整数型
- .局部变量 返回值, 文本型
- .计次循环首 (取文本长度 (值A), 计数)
- .如果 (取文本中间 (值A, 计数, 1) ≠ 取文本中间 (值B, 计数, 1))
- 返回值 = 返回值 + “1”
- .否则
- 返回值 = 返回值 + “0”
- .如果结束
- .计次循环尾 ()
- 返回 (返回值)
- .子程序 文本二进制位与, 文本型
- .参数 值A, 文本型
- .参数 值B, 文本型
- .局部变量 计数, 整数型
- .局部变量 返回值, 文本型
- .计次循环首 (取文本长度 (值A), 计数)
- .如果 (取文本中间 (值A, 计数, 1) = “1” 且 取文本中间 (值B, 计数, 1) = “1”)
- 返回值 = 返回值 + “1”
- .否则
- 返回值 = 返回值 + “0”
- .如果结束
- .计次循环尾 ()
- 返回 (返回值)
- .子程序 文本二进制位或, 文本型
- .参数 值A, 文本型
- .参数 值B, 文本型
- .局部变量 计数, 整数型
- .局部变量 返回值, 文本型
- .计次循环首 (取文本长度 (值A), 计数)
- .如果 (取文本中间 (值A, 计数, 1) = “1” 或 取文本中间 (值B, 计数, 1) = “1”)
- 返回值 = 返回值 + “1”
- .否则
- 返回值 = 返回值 + “0”
- .如果结束
- .计次循环尾 ()
- 返回 (返回值)
- .子程序 长整数位与, 长整数型, 公开, 不支持负数
- .参数 位运算数值一, 长整数型
- .参数 位运算数值二, 长整数型
- .局部变量 二进制位1, 文本型
- .局部变量 二进制位2, 文本型
- .如果真 (位运算数值一 < 0 或 位运算数值二 < 0)
- 返回 (0)
- .如果真结束
- 返回 (到长整数 (进制转换 (文本二进制位与 (二进制补64个0 (进制转换 (到文本 (位运算数值一), 10, 2)), 二进制补64个0 (进制转换 (到文本 (位运算数值二), 10, 2))), 2, 10)))
- .子程序 长整数位或, 长整数型, 公开, 不支持负数
- .参数 位运算数值一, 长整数型
- .参数 位运算数值二, 长整数型
- .局部变量 二进制位1, 文本型
- .局部变量 二进制位2, 文本型
- .如果真 (位运算数值一 < 0 或 位运算数值二 < 0)
- 返回 (0)
- .如果真结束
- 返回 (到长整数 (进制转换 (文本二进制位或 (二进制补64个0 (进制转换 (到文本 (位运算数值一), 10, 2)), 二进制补64个0 (进制转换 (到文本 (位运算数值二), 10, 2))), 2, 10)))
- .子程序 长整数位异或, 长整数型, 公开, 不支持负数
- .参数 位运算数值一, 长整数型
- .参数 位运算数值二, 长整数型
- .局部变量 二进制位1, 文本型
- .局部变量 二进制位2, 文本型
- .如果真 (位运算数值一 < 0 或 位运算数值二 < 0)
- 返回 (0)
- .如果真结束
- 返回 (到长整数 (进制转换 (文本二进制位异或 (二进制补64个0 (进制转换 (到文本 (位运算数值一), 10, 2)), 二进制补64个0 (进制转换 (到文本 (位运算数值二), 10, 2))), 2, 10)))
复制代码
|
|