如何在Standard ML中检查整数的base-2表示?

时间:2016-03-02 07:16:43

标签: binary sml

我正在尝试在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。

1 个答案:

答案 0 :(得分:1)

感谢matt,我找到了解决方案。

使用SML基础库中的Word类型,我使用了:

Word.andb(Word.fromInt(x),Word.fromInt(y))> Word.fromInt(0)