Int64 作为两个 Int32 输入。是否有可能以某种方式获得十进制形式的字符串表示形式的原始数字,仅具有 Int32 和 + - * / MOD 操作、位操作、移位、循环、条件运算符?例如,您可以在一个 Int32 中获取低 9 位十进制数字,在另一个 Int32 中获取高十进制数字,并且可以忽略 4-5 位二进制数字的损失。
例:原数 78542365896558 输入为 18287(高位双字)和 298954606(低位双字)。输出是一个字符串或两个数字 78542 和 365896558。
它就是这样一台计算机——工业PLC。结构化文本编程语言是为了提供信息。真正的 - 只有浮点数(单精度)。有实数数组。还有一种字符串数据类型,只有字符串常量、连接以及数字到字符串的转换,反之亦然。SELSTR 函数 - 按索引选择五行之一。
结果必须表示为两个(或更多,如果需要)Int32(如上所述)或字符串。
您可以使用 c*(c、c#、c++)或 Python 对该算法进行建模。
我想了想,最后决定只离线使用 - 对于顶层接口,我编写了一个 COM 库,它使用两个 Int32 返回一个字符串。我想在控制器中实现这个。
如果有人对这项任务感兴趣,我可以将其用于 NNN 积分竞赛。
为了简化问题,我们把一个数字想象成一组从高到低的数字,那么要从基数较小的系统转移到基数较大的系统,只需依次取数字,乘以基数,如果溢出,则添加一个新数字作为结果。
算法:
对于问题中的情况,当输入只有两个数字时,您可以选择 10 9量级的基数;在这种情况下,三个变量就足够了结果,这将起到数字的作用
输入数字的处理将按顺序进行,先高后低。
所以预先知道可以通过移位得到所需的二进制数的32位数字
旋转器:
所以这就是发生的事情: