如何检查标准 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)