如何检查标准 ML 中整数的 base-2 表示?
How do I inspect an integer's base-2 representation in Standard ML?
我正在尝试在 SML 中实现重复平方算法。我希望它是尾递归的。
目标是乘以所有 x^k,其中 k 是 2^m,2^m 是 n 的二进制表示中的 1。
例如,对于 x^25,计算 x^1 * x^8 * x^16 因为 16 + 8 + 1 = 25
我不知道如何用二进制部分表示数字,或使用按位运算手动检查(因为据我所知,SML 没有按位运算)。
我更愿意使用开箱即用的 SML 库,因此无需导入其他库。
这是一道作业题,所以如果你能在不完全放弃的情况下回答,那就太好了。
编辑:我使用的是新泽西州的 SML。
感谢 matt,我找到了解决方案。
使用 SML 基础库中的 Word 类型,我使用了:
Word.andb(Word.fromInt(x), Word.fromInt(y)) > Word.fromInt(0)
我正在尝试在 SML 中实现重复平方算法。我希望它是尾递归的。
目标是乘以所有 x^k,其中 k 是 2^m,2^m 是 n 的二进制表示中的 1。
例如,对于 x^25,计算 x^1 * x^8 * x^16 因为 16 + 8 + 1 = 25
我不知道如何用二进制部分表示数字,或使用按位运算手动检查(因为据我所知,SML 没有按位运算)。
我更愿意使用开箱即用的 SML 库,因此无需导入其他库。
这是一道作业题,所以如果你能在不完全放弃的情况下回答,那就太好了。
编辑:我使用的是新泽西州的 SML。
感谢 matt,我找到了解决方案。
使用 SML 基础库中的 Word 类型,我使用了:
Word.andb(Word.fromInt(x), Word.fromInt(y)) > Word.fromInt(0)